对this的常见误解 this指向函数本身; this指向函数的词法作用域; this是在运行时进行绑定的,并不是在编写时,它的上下文取决于函数调用时的条件。 this的绑定和函数声明的位置没有任何关系,只取决于函数的调用方式。 对象属性引用链中只有最顶层或者说最后一层会影响调用位置 判断this的 ...
分类:
编程语言 时间:
2017-01-10 15:08:45
阅读次数:
178
一直没注意到这个坑,今天看《你不知道的 JavaScript》中提到了,今后需要注意。 ...
分类:
其他好文 时间:
2017-01-09 18:36:09
阅读次数:
152
作用域和闭包 ?作用域 引擎:从头到尾负责整个JavaScript的编译及执行过程。 编译器:负责语法分析及代码生成等。 作用域:负责收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施一套非常严格的规则,确定当前执行的代码对这些标识符的访问权限。 作用域是一套规则,用于确定在何处以及如何查 ...
分类:
编程语言 时间:
2017-01-09 16:40:22
阅读次数:
178
一、对象 JavaScript简单类型有数字、字符串、布尔值、null、undefined,其他所有的值都是对象(数组、函数、正则表达式都是对象)。 数字、字符串、布尔值虽然拥有方法(包装对象),但并不是对象。 包装对象: 每当读取一个基本类型值的时候,后台会创建一个对象的基本包装类型的对象,从而能 ...
分类:
编程语言 时间:
2017-01-08 07:47:34
阅读次数:
248
在前一篇文章中,我们把作用域定义为”管理、维护变量的一套规则”,接下来是时候来深入讨论一下Js的作用域问题了,首先我们要知道作用域一般有两种主要的工作类型,一种是词法作用域,一种是动态作用域, Javascript采用的是词法作用域, 关于动态作用域的有兴趣的可以自行Google。 1.词法阶段 首... ...
分类:
编程语言 时间:
2016-12-05 23:13:35
阅读次数:
222
你不知道的Javascript(上卷)这本书在我看来是一本还不错的书籍,这本书用比较简洁的语言来描述Js的那些”坑”,在这里写一些博客记录一下笔记以便消化吸收。 1 编译原理 在此书中,开始便提出:Javascript是一门编译型语言,我一开始以为这是国内翻译的锅,翻译的不够准确,后来我还专门去gi... ...
分类:
编程语言 时间:
2016-11-28 23:10:38
阅读次数:
174
函数中的作用域 所谓函数作用域,就是属于这个函数的全部变量都可以在整个函数的范围内使用及复用。 命名冲突 在同一作用域中,相同的命名会引起冲突。 上面的代码将会引起冲突,函数会一直执行下去,行成死循环。 如何避免命名冲突呢? (1)全局命名空间 一些第三方库通常都是在全局对象中声明一个独特的对象,库 ...
分类:
编程语言 时间:
2016-11-28 19:46:25
阅读次数:
219
函数中的作用域 所谓函数作用域,就是属于这个函数的全部变量都可以在整个函数的范围内使用及复用。 命名冲突 在同一作用域中,相同的命名会引起冲突。 上面的代码将会引起冲突,函数会一直执行下去,行成死循环。 如何避免命名冲突呢? (1)全局命名空间 一些第三方库通常都是在全局对象中声明一个独特的对象,库 ...
分类:
编程语言 时间:
2016-10-20 21:31:08
阅读次数:
280
1 [[Prototype]] [[Prototype]]是对其他对象的引用,几乎所有对象在创建时[[Prototype]]属性会被赋予非空值。 引用对象属性时会触发[[Get]]操作,它会检查对象本身是否有这个属性,如果有就使用它,但a不在myObject,需要使用对象的[[Prototype]] ...
分类:
编程语言 时间:
2016-10-19 16:59:34
阅读次数:
147
一、什么是闭包 bar( )依然持有对该作用域的引用,这个引用叫作闭包。 无论通过任何手段将内部函数传递到所在词法作用域以外的,它都会有对原始定义作用域的引用,无论在何处执行这个函数都会产生闭包。 将内部函数timer传递给setTImeout,timer涵盖wait作用域的闭包,因此还保有对mes ...
分类:
编程语言 时间:
2016-10-12 16:53:32
阅读次数:
252