mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-24 18:32:22 +00:00
修改map
This commit is contained in:
parent
20c74cbe52
commit
c99b5720f6
@ -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数据结构有以下属性和方法。
|
||||
|
Loading…
x
Reference in New Issue
Block a user