地图中的默认键是什么意思?
What does it mean to say, default keys in map?
Here,它说,一个Object
有一个原型,所以映射中有默认键。但是,这可以使用 map = Object.create(null)
.
绕过
我无法理解map = Object.create(null)
的意思。
1) 将map.__proto__
设置为null
是什么意思?
2) 上面这段话,map的default keys是什么意思?
3) 这些默认键与 Object
有原型有什么关系?
map = Object.create(null).
意味着创建一个空对象,它甚至不会从 Object.prototype
.
获取属性
如果你试过
Object.getPrototypeOf(map);
它将 return 为空。
In the above paragraph, what does it mean to say, default keys of map?
您可以将对象用作 string-to-value 地图。例如:
var map = {};
map["foo"] = "pizza";
map["year"] = 2001;
您可能希望映射最初是空的。也就是说,对于任何 key
值,您期望表达式 map[key]
到 return undefined
,因为您尚未设置任何值。但是,对于普通对象,map["toString"]
有一个值!这与我们对上一句的期望相矛盾,我们期望 any map[key]
值为 undefined
。这就是文档中 "default keys" 的意思——一些键已经填充了值,即使你没有设置它们。
How these default keys are related to Object having a prototype?
这是因为对象从 Object.prototype
继承了一些属性。 JavaScript中的所有对象(或几乎所有对象)都有一个原型。如果您向对象请求 属性,而对象没有 属性,那么它将检查其原型是否具有该值。在 toString
的情况下,我们用 map = {}
创建的新对象没有自己的 toString
属性,但它的原型 Object.prototype
有有一个名为 toString
的 属性。因此,当您向对象实例请求名为 toString
的 属性 时,您会从原型中返回 toString
属性。
What does it mean to set map.__proto__
to null
?
这里的解决方案是创建一个根本没有原型的对象。即原型为null
的对象。我们可以用 Object.create(null)
.
来做到这一点
在那种情况下,当我们执行 map = Object.create(null)
然后请求 map["toString"]
时,我们确实得到了 undefined
,因为 null
-prototype map
没有原型可以从 toString
属性
Here,它说,一个Object
有一个原型,所以映射中有默认键。但是,这可以使用 map = Object.create(null)
.
我无法理解map = Object.create(null)
的意思。
1) 将map.__proto__
设置为null
是什么意思?
2) 上面这段话,map的default keys是什么意思?
3) 这些默认键与 Object
有原型有什么关系?
map = Object.create(null).
意味着创建一个空对象,它甚至不会从 Object.prototype
.
如果你试过
Object.getPrototypeOf(map);
它将 return 为空。
In the above paragraph, what does it mean to say, default keys of map?
您可以将对象用作 string-to-value 地图。例如:
var map = {};
map["foo"] = "pizza";
map["year"] = 2001;
您可能希望映射最初是空的。也就是说,对于任何 key
值,您期望表达式 map[key]
到 return undefined
,因为您尚未设置任何值。但是,对于普通对象,map["toString"]
有一个值!这与我们对上一句的期望相矛盾,我们期望 any map[key]
值为 undefined
。这就是文档中 "default keys" 的意思——一些键已经填充了值,即使你没有设置它们。
How these default keys are related to Object having a prototype?
这是因为对象从 Object.prototype
继承了一些属性。 JavaScript中的所有对象(或几乎所有对象)都有一个原型。如果您向对象请求 属性,而对象没有 属性,那么它将检查其原型是否具有该值。在 toString
的情况下,我们用 map = {}
创建的新对象没有自己的 toString
属性,但它的原型 Object.prototype
有有一个名为 toString
的 属性。因此,当您向对象实例请求名为 toString
的 属性 时,您会从原型中返回 toString
属性。
What does it mean to set
map.__proto__
tonull
?
这里的解决方案是创建一个根本没有原型的对象。即原型为null
的对象。我们可以用 Object.create(null)
.
在那种情况下,当我们执行 map = Object.create(null)
然后请求 map["toString"]
时,我们确实得到了 undefined
,因为 null
-prototype map
没有原型可以从 toString
属性