摘要: 1、for...in 对数组或对象的循环/迭代操作 对于数组循环出来的是数组元素;对于对象循环出来的是对象属性 2、判断对象是否是数组/对象的元素/属性 格式:(变量 in 对象) 当‘对象’是数组时:“变量”指的是数组的“索引”; 当‘对象’为对象是,“变量”指的是对象的“属性”。 阅读全文
posted @ 2019-12-20 14:43 fanmengfei 阅读(31301) 评论(1) 推荐(7) 编辑
摘要: 在js中我们都知道call/apply,还有比较少用的bind;传入的第一个参数都是改变函数当前上下文对象; call/apply区别在于传的参数不同,一个是已逗号分隔字符串,一个以数组形式。而bind和call几乎没差别只是将值返回。 可是当我们将null/undefined作为值传进去的时候呢? 阅读全文
posted @ 2019-12-20 14:27 fanmengfei 阅读(1961) 评论(0) 推荐(0) 编辑
摘要: 闭包的实现原理和作用 闭包: 有权访问另一个函数作用域中的变量的函数。 创建闭包的常见方式就是,在一个函数中创建另一个函数。 闭包的作用: 访问函数内部变量、保持函数在环境中一直存在,不会被垃圾回收机制处理 因为函数内部声明 的变量是局部的,只能在函数内部访问到,但是函数外部的变量是对函数内部可见的 阅读全文
posted @ 2019-12-20 11:11 fanmengfei 阅读(1205) 评论(0) 推荐(0) 编辑
摘要: JavaScript的作用域和作用域链 作用域: 变量的作用域无非两种:全局作用域和局部作用域 全局作用域: 最外层函数定义的变量拥有全局作用域。即对任何内部函数来说都是可以访问的。 局部作用域: 和全局作用域相反,局部作用域一般只能在部分代码片段中可以访问,而对于函数外部是无法访问的。例: 需要注 阅读全文
posted @ 2019-12-18 17:07 fanmengfei 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 词法作用域和动态作用域 1、作用域: 作用域是指程序代码中定义变量的区域 JavaScript采用词法作用域,也就是静态作用域 2、词法作用域和动态作用域 因为JavaScript采用的是词法作用域,函数的作用域在函数定义的时候就决定了。 而与词法作用域对应的是动态作用域,函数的作用域是在函数调用的 阅读全文
posted @ 2019-12-18 15:42 fanmengfei 阅读(703) 评论(0) 推荐(0) 编辑
摘要: 理解 es6 中class构造以及继承的底层实现原理 原文链接:https://blog.csdn.net/qq_34149805/article/details/86105123 1、ES6 class的使用 JavaScript使用的是原型式继承,通过原型的特性实现类的继承 ES6为我们提供了像 阅读全文
posted @ 2019-12-12 19:31 fanmengfei 阅读(3114) 评论(0) 推荐(0) 编辑
摘要: 可以描述 new一个对象的详细过程,手动实现一个 new操作符 1. new 一个对象的详细过程:(原文地址) 首先我们看下new Person输出什么? 有属性name, age 和 __proto__ __proto__里面有原型方法show,constructor, __proto__ 然后我 阅读全文
posted @ 2019-12-12 16:44 fanmengfei 阅读(1966) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2019-12-12 16:32 fanmengfei 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 实现继承的几种方式以及他们的优缺点(参考文档1、参考文档2、参考文档3) 要搞懂JS继承,我们首先要理解原型链:每一个实例对象都有一个__proto__属性(隐式原型),在js内部用来查找原型链;每一个构造函数都有prototype属性(显示原型),用来显示修改对象的原型,实例.__proto__= 阅读全文
posted @ 2019-12-12 15:36 fanmengfei 阅读(2321) 评论(0) 推荐(0) 编辑
摘要: 理解JavaScript的执行上下文栈,可以应用堆栈信息快速定位问题(原文文档) 1、什么是执行上下文: 简而言之,执行上下文就是当前JavaScript代码被解析和执行时所在环境的抽象概念,JavaScript中运行任何的代码都是在执行上下文中运行。 2、执行上下文类型: 执行上下文总共有三种类型 阅读全文
posted @ 2019-12-12 15:34 fanmengfei 阅读(835) 评论(0) 推荐(0) 编辑