【发布时间】:2013-04-06 07:00:56
【问题描述】:
我在 SO 上找到了一些有趣的例子。其中包括指向此article 的链接。 据说:
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。
【问题讨论】:
标签: javascript oop function object prototype