mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-24 18:32:22 +00:00
docs: fix #947
This commit is contained in:
parent
f9e16e462d
commit
0cc6602aca
@ -1083,18 +1083,20 @@ undefined
|
||||
前文说过,WeakMap 应用的典型场合就是 DOM 节点作为键名。下面是一个例子。
|
||||
|
||||
```javascript
|
||||
let myElement = document.getElementById('logo');
|
||||
let myWeakmap = new WeakMap();
|
||||
|
||||
myWeakmap.set(myElement, {timesClicked: 0});
|
||||
myWeakmap.set(
|
||||
document.getElementById('logo'),
|
||||
{timesClicked: 0})
|
||||
;
|
||||
|
||||
myElement.addEventListener('click', function() {
|
||||
let logoData = myWeakmap.get(myElement);
|
||||
document.getElementById('logo').addEventListener('click', function() {
|
||||
let logoData = myWeakmap.get(document.getElementById('logo'));
|
||||
logoData.timesClicked++;
|
||||
}, false);
|
||||
```
|
||||
|
||||
上面代码中,`myElement`是一个 DOM 节点,每当发生`click`事件,就更新一下状态。我们将这个状态作为键值放在 WeakMap 里,对应的键名就是`myElement`。一旦这个 DOM 节点删除,该状态就会自动消失,不存在内存泄漏风险。
|
||||
上面代码中,`document.getElementById('logo')`是一个 DOM 节点,每当发生`click`事件,就更新一下状态。我们将这个状态作为键值放在 WeakMap 里,对应的键名就是这个节点对象。一旦这个 DOM 节点删除,该状态就会自动消失,不存在内存泄漏风险。
|
||||
|
||||
WeakMap 的另一个用处是部署私有属性。
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user