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

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

 

总结笔记

 

原型链:

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

 

作用域链:

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

 

二维查找:

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

 

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

 

执行上下文堆栈

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

 

变量对象

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

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

 

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

 

posted @ 2016-11-22 16:26  FatDong  阅读(223)  评论(0编辑  收藏  举报