您的位置:首页 > 其它

原型链进阶

2016-02-16 23:53 288 查看
原型链进阶

所有的对象都是Function的一个实例,包括Object

Object.__proto__ === Function.protoype


每个实例后的对象的
__proto__
属性都指向构造函数的prototype属性

每个实例后的对象的constructor属性指向构造函数

Object 与 Function的relation

Object.__proto__ === Function.prototype


Object.prototype === Function.prototype.__proto__


Object.prototype.__proto__ === null


Smmarize

通过代码
Function.__proto__ === Function.prototype
, 可以得出结论Fucntion是由他的原型创建出来

通过代码
Function.prototype === Object.__proto__
可以看出Object是由Function创建出来。那么Function.prototype是由谁创建的呢? 答案是:
Function.prototype.__proto__ === Object.prototype
由此代码可以看出Function的原型是由Object创建出来的,那么我们此时又想知道Object.prototype是由谁创建出来的呢? 答案是:
Object.prototype.__proto__ === null
,由代码可以看出 ,它是自己蹦出来的。

如果想查看一个对象是由谁创建出来的? 可以通过此对象的
__proto__
属性来查看。

1.function Foo(){}
2.var foo = new Foo();
3.


Smmarize1

实例对象
foo
是通过构造函数
Foo
创建的,所以实例对象的
foo.__proto__
指向构造按函数
Foo.prototype
;又因为
Foo.__proto__
指向
Function.prototype
,所以
Foo
是通过
Function
创建出来的;那么问题来了Function是通过谁创建出来的呢? 答案是:
Function
的属性
__proto__
指向
Function.prototype
;继续挖
Function.prototype
是通过谁创建出来的呢? 结果是:
Function.prototype.__proto__
指向
Object.prototype
,所以说呢:
Function.prototype
是通过
Object.prototype
创建出来的,那么
Object.prototype.__proto__
又指向谁呢,答案是null, 它是从石头里蹦出来的.

小弟水平有限,若有什么不对之处,还请指教,感激不尽
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: