gpt4 book ai didi

javascript - 对象.create({}) : Is is a good practice?

转载 作者:搜寻专家 更新时间:2023-11-01 05:29:20 25 4
gpt4 key购买 nike

我一直在与公司中使用 JavaScript 的一些专业人士交谈,他们告诉我使用 new 或全局对象 {},即使我想要一个空对象,如下所示:

var wrong1 = new Object();
var wrong2 = {};

按照他们和公司的标准,正确的做法是这样创建:

var correct = Object.create({});

将空对象作为空对象的原型(prototype)进行传递似乎设计过度,甚至可能毫无目的。

有人可以告诉我为什么推荐这样做吗?如果不推荐,为什么不推荐? (可能的利弊。)

最佳答案

对象字面量将创建一个具有以下原型(prototype)链的对象。

Object.prototype -> {}

大多数引擎都对文字语法进行了大量优化,因为它是一种常见的模式。

为了比较,Object.create({}) 创建了一个具有更长原型(prototype)链的对象。

Object.prototype -> {} -> {}

实例(在最右边)有一个 {} 的原型(prototype),如前所述,它已经有一个 Object.prototype 的原型(prototype)。

Object.create 是一个非常有用的函数,可用于使用自定义原型(prototype)创建对象,并且它不会遇到与 new 相同的问题。但是,我们在这里不需要它,因为{}已经创建了一个原型(prototype)链较短的对象。

我不知道为什么有人会认为添加这个额外的间接层(和性能损失)是“最佳实践”。

如果有的话,我会说文字语法更安全——因为 {} 不可能被意外/恶意地重新定义,不像 Object 可以阴影。

var Object = 3;
// ...
Object.create({}) // TypeError: Object.create is not a function(...)

当然,这并不意味着您永远不应该使用 Object,但在这种情况下,我认为 {} 是最简单的工作工具,并且作为结果,它也具有最好的性能。

关于javascript - 对象.create({}) : Is is a good practice?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37544955/

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