From c99b5720f6c5b21df9c65dc83ca73ab1a5990487 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 19 Oct 2014 08:01:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9map?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/set-map.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/set-map.md b/docs/set-map.md index 15cccda..746b230 100644 --- a/docs/set-map.md +++ b/docs/set-map.md @@ -180,7 +180,7 @@ data[element] = metadata; ``` -上面代码原意是将一个DOM节点作为对象data的键,但是由于对象只接受字符串作为键名,所以element被自动转为字符串“[Object HTMLDivElement]”。 +上面代码原意是将一个DOM节点作为对象data的键,但是由于对象只接受字符串作为键名,所以element被自动转为字符串`[Object HTMLDivElement]`。 为了解决这个问题,ES6提供了map数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,对象也可以当作键。 @@ -197,9 +197,9 @@ console.log(m.get(o)) ``` -上面代码将对象o当作m的一个键。 +上面代码使用set方法,将对象o当作m的一个键,然后又使用get方法读取这个键。 -Map函数也可以接受一个数组进行初始化。 +map函数也可以接受一个数组进行初始化,该数组的成员是一个个表示键值对的数组。 ```javascript @@ -245,6 +245,8 @@ map.get(k2) // 222 上面代码中,变量k1和k2的值是一样的,但是它们在Map结构中被视为两个键。 +由上可知,map的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键。这就解决了同名属性碰撞(clash)的问题,我们扩展别人的库的时候,如果使用对象作为键名,就不用担心自己的属性与原作者的属性同名。 + **(2)属性和方法** Map数据结构有以下属性和方法。