By XFE-堪玉javascript
如下知识来源于对王福朋所写《深刻理解javascript原型和闭包》的理解和整理java
一切都是对象[引用类型],对象都是经过函数建立的[Funcion类型]闭包
对象是属性的集合,所以属性中的方法其实也是属性的一种函数
函数也是一种对象,所以也是属性的集合,能够对其进行自定义属性this
每一个函数都有一个属性prototype,属性值为一个对象——原型对象prototype
每一个对象都有一个隐式__proto__属性,指向建立该对象的函数的prototype指针
原型对象默认只有一个constructor的属性,指向函数自己对象
Function内置对象的__proto__指向了自身的Prototype,被自身建立继承
自定义或内置函数的prototype本质上和var obj={}同样的Object实例,都是被Object建立,所以根据语言的继承特性,默认原型都会包含一个内部指针,指向Object.prototype,所以Object.prototype里的全部属性和方法被理所应当的继承了下来ip
执行上下文激活至关于代码的"前期准备工做",是在被调用时建立的,其数据内容包括:
函数每被调用一次,都会产生一个新的执行上下文环境,执行完后上下文环境即被销毁
做用域是在函数建立时就产生的,同一个做用域下可能同时存在不一样的执行上下文
在函数中this到底取何值,是在函数真正被调用执行的时候肯定的,函数定义的时候肯定不了
处于活动状态的执行上下文环境只有一个,其实这是一个压栈出栈的过程——执行上下文栈
在当前做用域中使用,却没在当前做用域中建立的变量为自由变量
对于自由变量的取值,要到建立这个函数的那个做用域中取值——是“建立”,而不是“调用”