symbol
一.ES6引入Symbol
的原因
ES5对象属性名都是字符串,容易造成属性名的冲突。
let obj={
name:'zs'}
//为对象添加一个新的属性name
let prop = 'name'
obj[prop]='male'
console.log(obj) //{name: "male"}
//为这个对象添加新的方法,新方法的名字就有可能与现有方法产生冲突。
//如果有一种机制,保证每个属性的名字都是独一无二的,这样就从根本上防止了属性名冲突.
ES6中引入了一种新的基础数据类型:Symbol
,表示独一无二的值。
二.创建
1.Symbol 值由Symbol
函数生成
let s = Symbol();
console.log(s); //Symbol()
let s = new Symbol();
console.log(s);
// Uncaught TypeError: Symbol is not a constructor
[注意]Symbol
函数前不能使用new
命令,否则会报错。因为生成的 Symbol 是一个原始类型的值,不是对象
2.Symbol(可选参数)
可选参数 : 描述即将创建的Symbol,建议添加,以便于阅读代码和调试Symbol程序
let obj = {
};
let prop = Symbol("name");
obj[prop] = "zs";
console.log