看阮一峰的教程他说Symbol对于一个对象由多个模块构成的情况非常有用,能防止某一个键被不小心改写或覆盖
这个应该怎么理解?
我试着写了下,好像感受不以Synmbol这东西是唯一的!!
这个唯一要怎么理解?
var x = Symbol('show');
var y = Symbol('hello');
var a = {
[x] : function(){
console.log('xxx');
},
[y] : function(){
console.log('yyy');
},
x : function(){
console.log('ssssss')
}
}
a.x() //ssssss
a[x]();//xxx
a[y]();//yyy
以前属性名只能是数字或者字符串,很容易发生覆盖,
但是如果用Symbol,完全可以这样玩
因为
Sysbol() !== Symbol()
始终为true,所以两个Symbol()不可能相等,这就避免了覆盖