这个问题以前已经回答过了,但我想确认一下我的理解。在这段代码中:
var somePrototype = {
speak: function() {
console.log("I was made with a prototype");
}
}
function someConstructor() {
this.speak = function() {
console.log("I was made with a constructor");
}
}
var obj1 = Object.create(somePrototype);
var obj2 = new someConstructor();
obj1.speak();
obj2.speak();
它们本质上是在做同样的事情,对吗?唯一的区别是 function someConstructor()
是被提升的,这意味着如果需要,我可以在其定义之前调用它的新实例,而 var somePrototype
只能在其定义后调用。除此之外,没有其他区别了吗?
Object.create()
时,它肯定是一个原型。 - Pointyvar foo = {bar: 42}; function baz() {}
。你可以在定义之前调用baz
,但不能调用foo
。 - Felix Kling