考虑:
function Foo() {} var x = new Foo();
现在x和Foo有相同的原型,但只有Foo响应.prototype:
Object.getPrototype(x) === Foo.prototype // true x.prototype === Foo.prototype // false Foo.prototype // Foo {} (depending on which browser) x.prototype // undefined
为什么不起作用x.prototype
,但Foo.prototype
确实有效?
prototype
是构造函数的一个属性,它确定该构造函数创建的新对象的原型是什么.只在构造函数上有这样的属性才有用.
只要构造函数上的原型没有被更改:
Object.getPrototypeOf( x ) === Foo.prototype
这与以下相同:
Object.getPrototypeOf( x ) === x.constructor.prototype
注意一般:
Object.getPrototypeOf( Foo ) != Foo.prototype