我在 SO 上找到了一些有趣的例子。其中包括本文的链接。据说:
Function.__proto__
指向Function.prototype
. 这导致:
Function.constructor === Function
也就是说:函数是它自己的构造函数!
Object instanceof Object == true.
这是因为:
Object.__proto__.__proto__.constructor == Object
另请注意,与
Object instanceof Object
,不同Foo instanceof Foo == false
。这是因为:Foo
不作为它自己的原型链的构造函数存在。
从 Mozilla 开发者网络我发现原型和构造函数都可以很容易地被覆盖。而且由于instanceof
只是检查constructor.prototype
原型链,我真的不明白为什么我的代码仍然返回false
。
function Foo() { } ;
Foo.prototype = Foo
Foo.constructor = Foo
Foo instanceof Foo // still false
还有一些关于原型的问题。我做对了吗,原型本身是一个单独的辅助对象?这个对象就像另一个对象上的指针——通常Object
。