阅读此说明后:http://wiki.ecmascript.org/doku.php?id=harmony:weak_maps
我试图掌握它的诀窍,但我不了解整体情况。这都是关于什么的?在Firefox6中似乎也支持:http://kangax.github.com/es5-compat-table/non-standard/
发布于 2014-11-07 02:08:44
WeakMap允许使用对象作为键。它没有任何方法来知道地图的长度。长度始终为1。键不能是原始值
关于使用object作为键需要注意的一点是,由于在JavaScript中所有的对象都是默认的单例,我们应该创建一个对象引用并使用它。
这是因为当我们创建匿名对象时,它们是不同的。
if ( {} !== {} ) { console.log('Objects are singletons') };
// will print "Objects are singletons"
因此,在下面的场景中,我们不能期望获得值
var wm = new WeakMap()
wm.set([1],'testVal');
wm.get([1]); // will be undefined
下面的代码片段将按预期工作。
var a = [1];
wm.set(a, 'testVal');
wm.get(a); // will return 'testVal'
https://stackoverflow.com/questions/6774185
复制相似问题