为什么这两个实现行为不同? 当评估它们的原型时,究竟是什么使它们不同?
使用指定的原型创建对象:
function Foo() {}
// creates an object with a specified prototype
var bar = Object.create(Foo);
console.log(Object.getPrototypeOf(bar)); // returns: function Foo(){}
console.log(Foo.isPrototypeOf(bar)); // returns: true
使用构造函数创建对象:
function Foo() {}
// creates an object with the constructor method
var bar = new Foo();
console.log(Object.getPrototypeOf(bar)); // returns: Foo {}
console.log(Foo.isPrototypeOf(bar)); // returns: false
另外,为什么第二个实现会返回Foo {}
和false
?
var bar = Object.create( Foo.prototype );
,这样可以得到期望的行为。 - PaulObject.create()
和new SomeFunction()
之间的区别 - Bergi