原型链与作用域链、执行上下文
总结笔记
原型链:
每个对象都有一个__proto__隐式原型属性,当对象在自身的基本属性中找不到所需的属性,它将沿着__proto__链去找。
作用域链:
所有变量都存储在变量对象VO中,当在变量对象找不到时,将会往上一级执行上下文的变量对象中查找。with,catch语句会改变作用域链。
二维查找:
首先,沿着对象的作用域链找到上一个作用域链节点,然后,在当前的作用域链节点查找,如果查找不到,就沿着原型链查找,接着,如果还是找不到,就继续找下一个作用域链节点。
注意:活动对象(函数)没有原型
执行上下文堆栈
当程序开始时,会进入全局上下文环境。调用函数,就会进入函数的执行上下文。eval也是一个函数。
变量对象
全局上下文变量对象(全局对象)(VO):①存储变量声明、函数声明。 ②在任何地方都可以访问,在整个程序结束后才销毁。
函数上下文变量对象(AO):存储变量声明、函数声明、arguments对象、函数的形参
注意:变量对象中不存储函数表达式