js Symbol()用法

时间:2016-02-25 11:22:30

标签: javascript ecmascript-6 symbols

通过填充物查找我发现符号类型使用如下:

if (window.Symbol) {
  obj = {cached: Symbol(),    /****/ };
}

/* and is used */
 obj.cached = [] // which overrides Symbol(), 

我是JS中Symbol()的新手,但据我所知,它应该用于制作避免碰撞的唯一对象键,所以应该或多或少地使用:

var obj = {}, cached;

if (window.Symbol) {
    cached = Symbol();
    obj[cached] = null;
}
/* an then used */
 obj[cached] = [ /*****/ ];

我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

我不太了解你的例子,但总的来说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()具有相同的效果......所以也许它不是最好的例子。