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