gpt4 book ai didi

javascript - 有什么理由在 JavaScript 中使用 Object.create() 或 new 吗?

转载 作者:数据小太阳 更新时间:2023-10-29 04:02:45 25 4
gpt4 key购买 nike

到目前为止,我一直在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com