上卷笔记三 (constructor)

现象


JavaScript的原型链常用的部分如下图:

原型链局部图

很多人,包括我之前对此的理解就是一个三角形关系。

构造函数Foo生成实例对象f1,实例对象f1经过_proto_继承原型对象Foo.prototype的属性和方法。
构造函数Foo的属性prototype指向原型对象,原型对象的属性constructor指向构造函数。

看了这本书才知道原来还有这样的事:

function Foo() {
// ...
}
Foo.prototype.constructor === Foo; // true
var a = new Foo();
a.constructor === Foo; // true !!!

实例对象的.constructor竟然也指向Foo......

原来实例对象f1.constructor同样通过默认的_proto_委托指向了Foo

结论


f1.constructor是一个非常不靠谱的引用,稍不留神会指向其他地方。
要尽量避免这些引用。

你可能感兴趣的:( 上卷笔记三 (constructor))