本文阐述了6符号
类型。
分享给您
参考,如下:
符号是一个新添加的类型在6。
正如我们所知道的,Javascript中有以下几种类型:
未定义的、空的、布尔的、数字、字符串、对象。
但是,在
处理某些
情况时,上述类型是远远不够的:
假设我们想移动div,我们还需要判断div在某些情况下是否处于移动状态。因此,我们将考虑为div对象
设置属性。
如果(元。正在){
smoothanimations(元);
}
element.ismoving =真;
但也存在一些问题,例如:
我们可能会与第三方图书馆发生冲突。
我们可能与未来的标准冲突。
因此,您可以使用第二种
方法,即使用加密
函数来生成值:
VaR正= securerandom.generatename();
…
如果(元{正}){
smoothanimations(元);
}
元{ } =真实动人;
这确实
解决了冲突问题,但它带来了一个调试问题,每当我们查看对象的属性时,就会看到很多垃圾名。
所以为了解决冲突的问题,提出了一种新型ES6如符号。
符号是一种特殊的、不可变的数据类型,可以用作对象属性的标识符:
var SYM1 =符号();
var Sym2 =符号(foo);
var sym3 =符号(foo);
符号()不会将字符串强制为符号,每次都
创建一个新符号。
符号()=符号()
因此,您可以使用此特性创建私有属性:
(函数(){())
创建符号
var =符号();
函数的MyClass(私人数据){
这{key} =私人数据;
}
myclass.prototype = { {
DoStuff:函数(){
…这个{键}…
}
};
});
var c =新MyClass(你好)
键否不能访问该属性,因为它是私有的。
符号也可以用来化解上述冲突问题:
一个唯一的符号
VaR正=符号(正);
…
如果(元{正}){
smoothanimations(元);
}
元{ } =真实动人;
当然,你也可以生成符号类型可以共享与外面的另一个调用的方法,这是symbol.for方法。
的symbol.for(关键)方法将从
注册表中找到对应的符号象征,根据给定的密钥。如果它找到它,它会返回它。否则,创建一个与该键
关联的新符号,并将其放置在符号注册表中。
symbol.for(foo); / /在注册表中创建一个符号和象征,关键是foo
symbol.for(foo); / /读为foo象征符号键在注册表
symbol.for(条)= symbol.for(条); / /真的,证明了上述所说的
符号(bar)=符号(bar);,false,符号()函数返回一个新符号
VAR符号= symbol.for(马里奥);
sym.tostring();
符号(马里奥),马里奥是符号注册表符号中的符号,关键字是描述符号本身的字符串。
因此,为了防止冲突,我们最好给符号加前缀:
symbol.for(MDN。foo);
symbol.for(MDN。酒吧);
希望本文有助于ECMAscript
程序设计。