Lub*_*rek 11 javascript weak-references ecmascript-6
ECMAScript 6有这些非常相似的集合:Set和WeakSet.他们之间有什么区别?
Lub*_*rek 11
主要区别在于对Set中对象的引用很强,而对WeakSet中对象的引用很弱.这意味着如果没有其他引用,WeakSet中的对象可以被垃圾收集.
其他差异(或相反的副作用)是:
Wil*_*een 10
弱集是包含对象集合的 javascript 对象。由于集合的性质,在该集合中仅可能出现同一对象的一个对象引用。弱集在以下方面与普通集不同:
int, boolean, string)。WeakSet,该对象就可以被垃圾收集(即 JS 引擎将释放引用指向的对象的内存)。let myWeakSet = new WeakSet();
let obj = {};
myWeakSet.add(obj);
console.log(myWeakSet.has(obj));
// break the last reference to the object we created earlier
obj = 5;
// false because no other references to the object which the weakset points to
// because weakset was the only object holding a reference it released it and got garbage collected
console.log(myWeakSet.has(obj));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2411 次 |
| 最近记录: |