一、说说你对作⽤域链的理解
- 作⽤域链的作⽤是保证执⾏环境⾥有权访问的变量和函数是有序的,作⽤域链的变量只能 向上访问,变量访问到 window对象即被终⽌,作⽤域链向下访问变量是不被允许的
- 简单的说,作⽤域就是变量与函数的可访问范围,即作⽤域控制着变量与函数的可⻅性和 ⽣命周期
二、原型
- 每个对象都会在其内部初始化⼀个属性,就是 prototype (原型),当我们访问⼀个对象的 属性时
- 如果这个对象内部不存在这个属性,那么他就会去 prototype ⾥找这个属性,这个
prototype ⼜会有⾃⼰的 prototype ,于是就这样⼀直找下去,也就是我们平时所说的 原型链的概念 - 关系: instance.constructor.prototype = instance.__p
- 特点:
JavaScript 对象是通过引⽤来传递的,我们创建的每个新对象实体中并没有⼀份属于 ⾃⼰的原型副本。当我们修改原型时,与之相关的对象也会继承这⼀改变 - 当我们需要⼀个属性的时, Javascript 引擎会先看当前对象中是否有这个属性, 如果没 有的
- 就会查找他的 Prototype 对象是否有这个属性,如此递推下去,⼀直检索到 Object 内 建对象