通过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()可能具有相同的效果……因此,这不是最佳示例。

10-05 21:25