通过polyfill查看,我发现Symbols类型使用如下:
if (window.Symbol) {
obj = {cached: Symbol(), /****/ };
}
/* and is used */
obj.cached = [] // which overrides Symbol(),
我是JS中
Symbol()
的新手,但据我所知,应该将其用于制作避免碰撞的唯一对象键,所以应该或多或少地使用so,例如:var obj = {}, cached;
if (window.Symbol) {
cached = Symbol();
obj[cached] = null;
}
/* an then used */
obj[cached] = [ /*****/ ];
我想念什么吗?
最佳答案
我不太了解您的示例,但是Symbol()
通常是“一定是唯一的”。可以按以下方式使用它:
var cached = Symbol();
var state = {obj: cached };
// code that can change state.obj in arbitrary ways
if (state.obj === cached)
console.log("still cached");
另一方面,使用
cached = Object()
可能具有相同的效果……因此,这不是最佳示例。