gpt4 book ai didi

javascript - map 中的默认键是什么意思?

转载 作者:行者123 更新时间:2023-11-30 16:22:36 25 4
gpt4 key购买 nike

Here ,它说,一个 Object 有一个原型(prototype),所以映射中有默认键。但是,这可以使用 map = Object.create(null) 来绕过。

我无法理解 map = Object.create(null) 的含义。

1) 将map.__proto__设置为null是什么意思?

2) 上面这段话,map的default keys是什么意思?

3) 这些默认键如何与具有原型(prototype)的 Object 相关?

最佳答案

In the above paragraph, what does it mean to say, default keys of map?

您可以将对象用作字符串到值的映射。例如:

var map = {};
map["foo"] = "pizza";
map["year"] = 2001;

您可能希望映射最初是空的。也就是说,对于任何 key 值,您期望表达式 map[key] 返回 undefined,因为您还没有设置任何值.但是,对于普通对象,map["toString"] 有一个值!这与我们对上一句的期望相矛盾,我们期望 any map[key] 值为 undefined。这就是文档中“默认键”的意思——一些键已经填充了值,即使你没有设置它们。

How these default keys are related to Object having a prototype?

这是因为对象从 Object.prototype 继承了一些属性。 JavaScript 中的所有对象(或者几乎所有对象)都有一个原型(prototype)。如果你向一个对象询问一个属性,而这个对象没有那个属性,那么它会检查它的原型(prototype)是否有这个值。在 toString 的情况下,我们使用 map = {} 创建的新对象本身没有 toString 属性,但它的原型(prototype),Object.prototype,确实有一个名为 toString 的属性。因此,当您向对象实例请求名为 toString 的属性时,您会从原型(prototype)中取回 toString 属性。

What does it mean to set map.__proto__ to null?

这里的解决方案是创建一个根本没有原型(prototype)的对象。即,原型(prototype)为 null 的对象。我们可以使用 Object.create(null) 来做到这一点。

在那种情况下,当我们执行 map = Object.create(null) 然后请求 map["toString"] 时,我们确实得到了 undefined ,因为 null-prototype map 没有从中获取继承的 toString 属性的原型(prototype)。

关于javascript - map 中的默认键是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34535398/

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