原型与原型链:
每个函数都有 prototype 属性,除了 Function.prototype.bind() ,该属性指向原型。
每个对象都有 __proto__ 属性,指向了创建该对象的构造函数的原型。其实这个属性指 向了 [[prototype]] ,但是 [[prototype]] 是内部属性,我们并不能访问到,所以使⽤ __proto__ 来访问。
对象可以通过 __proto__ 来寻找不属于该对象的属性, __proto__ 将对象连接起来组 成了原型链。
关系: instance.constructor.prototype = instance.__proto__
作用域与作用域链:
作⽤域就是变量与函数的可访问范围,即作⽤域控制着变量与函数的可⻅性和⽣命周期,也可理解为该上下⽂中声明的变量和声明的作⽤范围,可分为块级作⽤域和函数作⽤域。
作⽤域链可以理解成包含⾃身变量对象和上级变量对象的列表,通 过 [[Scope]] 属性查找上级变量。
作⽤域链的作⽤是保证执⾏环境⾥有权访问的变量和函数是有序的,作⽤域链的变量只能向上访问,变量访问到 window 对象即被终⽌,作⽤域链向下访问变量是不被允许的。