原型链与作用域链、执行上下文

学习文章---汤姆大叔的博客

总结笔记

原型链:

每个对象都有一个__proto__隐式原型属性,当对象在自身的基本属性中找不到所需的属性,它将沿着__proto__链去找。

作用域链:

所有变量都存储在变量对象VO中,当在变量对象找不到时,将会往上一级执行上下文的变量对象中查找。with,catch语句会改变作用域链。

二维查找:

首先,沿着对象的作用域链找到上一个作用域链节点,然后,在当前的作用域链节点查找,如果查找不到,就沿着原型链查找,接着,如果还是找不到,就继续找下一个作用域链节点。

注意:活动对象(函数)没有原型

执行上下文堆栈

当程序开始时,会进入全局上下文环境。调用函数,就会进入函数的执行上下文。eval也是一个函数。

变量对象

全局上下文变量对象(全局对象)(VO):①存储变量声明、函数声明。 ②在任何地方都可以访问,在整个程序结束后才销毁。

函数上下文变量对象(AO):存储变量声明、函数声明、arguments对象、函数的形参

注意:变量对象中不存储函数表达式

原文地址:https://www.cnblogs.com/xuhaodong/p/javascript.html