WEB开发网
开发学院网页设计JavaScript JavaScript对象模型 阅读

JavaScript对象模型

 2010-09-14 13:20:17 来源:WEB开发网   
核心提示: 1. 创建一个build-in object对象fn2. 将fn的内部[[Prototype]]设为Function.prototype3. 设置内部的[[Call]]属性,它是内部实现的一个方法,JavaScript对象模型(9),处理逻辑参考对象创建过程的步骤34. 设置内部的[[Co

1. 创建一个build-in object对象fn

2. 将fn的内部[[Prototype]]设为Function.prototype

3. 设置内部的[[Call]]属性,它是内部实现的一个方法,处理逻辑参考对象创建过程的步骤3

4. 设置内部的[[Construct]]属性,它是内部实现的一个方法,处理逻辑参考对象创建过程的步骤1,2,3,4

5. 设置fn.length为funArgs.length,如果函数没有参数,则将fn.length设置为0

6. 使用new Object()同样的逻辑创建一个Object对象fnProto

7. 将fnProto.constructor设为fn

8. 将fn.prototype设为fnProto

9. 返回fn

步骤1跟步骤6的区别为,步骤1只是创建内部用来实现Object对象的数据结构,并完成内部必要的初始化工作,但它的[[Prototype]]、[[Call]]、[[Construct]]等属性应当为null或者内部初始化值,即我们可以理解为不指向任何对象(对[[Prototype]]这样的属性而言),或者不包含任何处理(对[[Call]]、[[Construct]]这样的方法而言)。步骤6则将按照前面描述的对象创建过程创建一个新的对象,它的[[Prototype]]等被设置了。

从上面的处理步骤可以了解,任何时候我们定义一个函数,它的prototype是一个Object实例,这样默认情况下我们创建自定义函数的实例对象时,它们的Prototype链将指向Object.prototype。

另外,Function一个特殊的地方,是它的[[Call]]和[[Construct]]处理逻辑一样。

JavaScript对象模型

JavaScript对象模型

红色虚线表示隐式Prototype链。

这张对象模型图中包含了太多东西,不少地方需要仔细体会,可以写些测试代码进行验证。彻底理解了这张图,对JavaScript语言的了解也就差不多了。下面是一些补充说明:

上一页  4 5 6 7 8 9 10  下一页

Tags:JavaScript 对象 模型

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接