
js
kecanwen
这个作者很懒,什么都没留下…
展开
-
用js模拟数据结构 栈 结构
栈 数据结构原创 2022-10-16 23:44:18 · 341 阅读 · 1 评论 -
原型链 —— 以隐式引用作为存储方式的单向链表
原型链的表述 一个以隐式引用作为存储方式,以点操作符和属性访问语句作为语法糖的单向链表原型链作为一个单向链表并没有完全发挥出单向链表的特性,换句话说JS中的原型链是只用部分能力的单向链表原型对象真的没有尽头吗?当然不是的, 原型对象由浏览器自动创建, 当然也有它自己的规则规则如下:1.每个构造函数在诞生的时候, 都会创建一个该函数的实例对象作为默认原型相当于 Phone.prototype = new Phone();2.而这个原型对象的原型, 则默认指向Object.pro原创 2022-01-27 12:59:05 · 396 阅读 · 0 评论 -
750px设计稿处理方式
一般设计图的宽度为750px,现在我们的目标就是将layoutviewport设置为750px;layoutviewport受到两个属性的影响,width属性我们之间设置为750,initial-scale缩放比例应该为idealviewport的宽度/750;当我们未改变meta标签属性的时候,layoutviewport的值其实就是idealviewport的值,所以可以通过document.body.clientWidth或者window.innerWidth来获取。(function () {原创 2022-01-27 12:50:19 · 2113 阅读 · 0 评论 -
用闭包实现重载的过程学习闭包
用闭包实现重载的过程学习闭包let global = { overLoad:function(){}};function Refactoring(func) { let oldFunc = global.overLoad; global.overLoad = function () { if (func.length === arguments.length) {//js函数length属性表示有多少个参数 return func.apply(this, arg原创 2022-01-19 18:21:48 · 467 阅读 · 0 评论 -
绑定到对象上的copyWithin方法
对于在数组上使用copyWithin方法应该都很熟悉,但是绑定到对象上呢?[].copyWithin.call({length: 5, 3: 1}, 0, 3)I just began to learn JavaScript, and I have no idea how to understand the following code[].copyWithin.call({length: 5, 3: 1}, 0, 3)// {0: 1, 3: 1, length: 5}通过call方法,.原创 2021-08-25 23:32:22 · 196 阅读 · 0 评论 -
[].slice.call(arguments)模拟实现 Array.of
最近在读《ES6标准入门》这本书,无意间看到下面这段代码:// Array.of()方法可以用下面的代码模拟实现。function ArrayOf(){ return [].slice.call(arguments);}不太理解这段代码的原理,于是觉得弄清楚到底是怎么做到的首先弄清楚slice方法slice() 方法返回一个新的数组对象,一个由 begin 和 end 决定的原数组的浅拷贝const animals = ['ant', 'bison', 'camel', 'duck'.原创 2021-08-25 23:01:38 · 160 阅读 · 0 评论 -
ES6中解构赋值深入解读
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构let [head, ...tail] = [1, 2, 3, 4];head // 1tail // [2, 3, 4]let [x, y, ...z] = ['a'];x // "a"y // undefinedz // []不完全解构let [x, y] = [1, 2, 3];x // 1y // 2let [a, [b], d] = [1, [2, 3], 4];a // 1b // 2原创 2020-10-28 10:42:44 · 573 阅读 · 0 评论 -
微任务与宏任务与eventloop
首先我们需要了解一个概念,在promise执行之前是同步任务,再.then和.catch之后变成微任务执行完同步任务之后,优先执行微任务执行顺序是:同步任务 ==> 微任务 ==>宏任务js是单线程的语言,不会同时执行两行代码,当我们出现alert弹窗时,是无法执行下面的console.info的setTimeout(_ => console.log(4))new Promise(resolve => { resolve() console.log(1)原创 2020-10-22 14:52:10 · 187 阅读 · 0 评论 -
谈谈我对js中闭包的理解
闭包是一个能够访问其他函数作用域的函数。很显然这样的定义晦涩难懂,很多人都很难理解闭包的真正含义那么我们就用通俗一点的语言来解析一下什么是闭包我在知乎上看到一个比较有意思的回答:由此我们可以通俗的理解为:函数A的内部函数B,被函数A外部的一个变量引用时,就会形成一个闭包。我们最常用到闭包的情况就是函数封装展示一下我在实际项目中遇到闭包的应用场景:我们需要调用这个getFeedbackList方法的时候,只需要formFeedbackServics.getFeedbackList()就原创 2020-10-14 21:30:20 · 225 阅读 · 0 评论