1. 原型/原型链
原型
每一个JavaScript对象(null除外)在创建的时候就会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型"继承"属性。
prototype , _ proto _和constructor
prototype是对象或者函数的一个属性,指向该对象或者函数的原型。
_ proto _是实例对象的一个属性,指向该实例对象的原型。
每个原型都有一个 constructor 属性指向关联的构造函数。

当读取实例的属性时,如果找不到,就会查找与对象关联的原型中的属性,如果还查不到,就去找原型的原型,一直找到最顶层为止。
2. 执行上下文/作用域链/闭包
作用域链
当查找变量的时候,会先从当前上下文的变量对象中查找,如果没有找到,就会从父级(词法层面上的父级)执行上下文的变量对象中查找,一直找到全局上下文的变量对象,也就是全局对象。这样由多个执行上下文的变量对象构成的链表就叫做作用域链。
- 理解 JavaScript 中的执行上下文和执行栈
- JavaScript深入之执行上下文栈
- 一道js面试题引发的思考
- 发现 JavaScript 中闭包的强大威力
- 破解前端面试(80% 应聘者不及格系列):从闭包说起
网友评论