到目前为止,我一直在 JavaScript 中使用 new
关键字。我一直在阅读有关 Object.create
的内容,我想知道我是否应该改用它。我不太明白的是我经常需要运行构造代码,所以我根本看不到 Object.create
将如何工作,因为它不会触发任何函数运行。
谁能告诉我,在什么情况下我应该使用 Object.create
而不是 new
?
最佳答案
到目前为止,如果要创建一个对象,只能使用字面量:
var obj = {};
或 Object
构造函数。
var obj = Object();
但是这些方法都不允许您指定所创建对象的原型(prototype)。
这就是您现在可以使用 Object.create
做的事情。它允许您创建一个新对象并将第一个参数设置为新对象的原型(prototype)。此外,它还允许您设置作为第二个参数提供的新对象的属性。
这类似于做这样的事情(没有第二个参数):
function create(proto) {
var Constr = function(){};
Constr.prototype = proto;
return new Constr();
}
因此,如果您使用的是与此类似的构造,则当您想要使用 Object.create
时。
它不是 new
的替代品。它更多的是使创建应该从另一个对象继承的单个对象更简单。
例子:
我有一个对象a
:
var a = {
someFunction: function() {}
};
并且我希望b
扩展这个对象。然后你可以使用Object.create
:
b = Object.create(a);
b.someOtherFunction = function(){};
每当你有一个构造函数,但你只从它实例化一个一个对象时,你可以用Object.create
替换它。
有适用的一般规则。这在很大程度上取决于构造函数在做什么以及您如何从其他对象继承等等。
关于javascript - 有什么理由在 JavaScript 中使用 Object.create() 或 new 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6613261/