首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

关于scope chain与prototype chain的一些了解

2012-10-25 
关于scope chain与prototype chain的一些理解关于scope chain与prototype chain的一些理解scope chain1.函

关于scope chain与prototype chain的一些理解

关于scope chain与prototype chain的一些理解

scope chain

1.函数是对象,当一个函数创建时,有一个内置属性[[Scope]]自动创建只提供给js引擎读取,纪录了这个函数的scope chain的一个集合,里面的每一个元素叫做variable object

2.当函数执行时,自动创建一个excution context,它里面也会创建一个scope chain的集合,它是复制函数的[[Scope]]属性,并且在它0的位置添加一个activation object

3.这个activation object包含了this和arguments引用,整个excution context里的scope chain当告诉函数如何读取和修改数据,所有的数据都在这个scope chain集合里

4.当函数执行完毕,excution context destroyed,它里面的scope chain也destroyed,scope chain里的activation object也destroyed

prototype chain
1.一个对象实例有instance members与prototype members,而function object由于暴露了prototype,则可以实现经典的伪类继承,实际上只是将实例对象的prototype引用到另一个对象上(个人喜欢将其包装起来,没有显示的prototype和new)


2.而非function object instances没有直接可操作的prototype对象,虽然有些browser有__proto__,但毕竟ie没有


3.Object.prototype.prototype是null,因此原型链到此结束,原型链本质是一系列的引用链,由于每创建一个对象或者函数系统都会自动创建这样一个prototype对象的引用,所以js的继承就是如此简单


总结:
scope chain与prototype chain前者是解决了变量的查寻方案,后一个是解决了对象属性的查寻方案,一个用于闭包,另一个用于继承,而在js中第三个重要的概念就是context,说白了就是如何将函数/方法里的this绑定到正确的对象上,这里就需要用到apply/call这些函数方法了,是用于代码重用。

热点排行
Bad Request.