gpt4 book ai didi

javascript - Object.create(null) 的用例?

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

如果您使用 var obj = {}; 创建一个常规的 javascript 对象,它将具有对象原型(prototype)。使用 var obj = new MyClass(); 创建的对象也是如此 在引入 Object.create 之前,没有办法解决这个问题。然而,现在可以使用 var obj = Object.create(null); 创建一个没有原型(prototype)的对象(相应的 null 作为其原型(prototype))。

为什么这很重要?它带来了哪些优势?有任何现实世界的用例吗?

最佳答案

它是一个完全空的对象(没有从任何 .prototype 继承,包括 Object.prototype),所以你可以保证任何属性查找只有在属性被显式添加到对象中。

例如,如果您想在事先不知道 key 的地方存储一些数据,则提供的 key 可能与 Object.prototype 的成员同名, 并导致错误。

在这些情况下,您需要执行显式 .hasOwnProperty() 检查以排除意外的继承值。但是如果没有任何继承,您的测试可以简化为 if (key in my_object) { 测试,或者可能是一个简单的真实测试 if (my_object[key]) {如果合适的话。

此外,如果没有原型(prototype)链,我想查找结果不存在的属性会更快,因为只需要检查直接对象。这在现实中是否成功(由于优化)将通过性能测试来确定。

关于javascript - Object.create(null) 的用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26961544/

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