原型链进阶
- 所有的对象都是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, 它是从石头里蹦出来的.
- 实例对象
-
小弟水平有限,若有什么不对之处,还请留言指出哈