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数据结构有以下属性和方法。