Javascript 地图中的默认键意味着什么?

Javascript 地图中的默认键意味着什么?,javascript,javascript-objects,Javascript,Javascript Objects,它说,对象有一个原型,所以地图中有默认键。但是,可以使用map=Object.create(null)绕过此选项 我无法理解map=Object.create(null)的含义 1) 将map.\uuuuu proto\uuuu设置为null意味着什么 2) 在上面的段落中,地图的默认键是什么意思 3) 这些默认键如何与拥有原型的对象相关 map = Object.create(null). 意味着创建一个空对象,它甚至不能从object.prototype获取属性 如果你试过 Object

它说,
对象
有一个原型,所以地图中有默认键。但是,可以使用
map=Object.create(null)
绕过此选项

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

1) 将
map.\uuuuu proto\uuuu
设置为
null
意味着什么

2) 在上面的段落中,地图的默认键是什么意思

3) 这些默认键如何与拥有原型的对象相关

map = Object.create(null). 
意味着创建一个空对象,它甚至不能从
object.prototype
获取属性

如果你试过

Object.getPrototypeOf(map)它将返回null

在上面的段落中,地图的默认键是什么意思

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

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

这些默认键如何与具有原型的对象相关

map = Object.create(null). 
这是因为对象从
Object.prototype
继承了一些属性。JavaScript中的所有对象(或几乎所有对象)都有一个原型。如果您向对象请求属性,而该对象没有该属性,那么它将检查其原型是否具有该值。在
toString
案例中,我们用
map={}
创建的新对象没有自己的
toString
属性,但是它的原型
object.prototype
有一个名为
toString
的属性。因此,当您向对象实例请求名为
toString
的属性时,您将从原型返回
toString
属性

map.\uuuuu proto\uuuu
设置为
null
意味着什么

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


在这种情况下,当我们做
map=Object.create(null)
然后要求
map[“toString”]
时,我们确实得到了
未定义的
,因为
null
-prototype
map
没有一个原型来获取继承的
toString
属性。

我理解这一点。但是,与
newmap()
instance谈论这一点的意义是什么呢?我已经理解了您对前两个问题的答案。我的问题是,为什么这是明确告诉地图实例?obj={};也有默认键。例如:toString()@overexchange这与
Map
的工作方式没有任何关系。这只是关于如何使用
对象
将字符串映射到值,就像
映射
也可以做的那样。