let a=1; let b=1; console.log(a==b); //结果:true let x=Symbol('this is x'); console.log(typeof x); //结果:symbol let y=Symbol('y'); console.log(x==y); //结果: false
//这里 Synbol 前面不能使用 new 操做符。 //防止对象的属性被篡改
let sz={name:'曹伟',age:19,[Symbol('xh')]:'007'}; sz['name']='caowei123'; sz[Symbol('xh')]='009'; console.log(sz); //结果:Objectage: 19name: "caowei123"Symbol(xh): "007"Symbol(xh): "009"__proto__: Object console.log(sz.name); //结果:caowei123
let sVal = Symbol(); console.log(typeof sVal)
上面的代码的输出值是'symbol';javascript
前面不能使用new,不然会报错;由于Symbol是一种值类型数据,这也是很好理解的.Symbol()用做Symbol值的描述,也能够理解为键(key),代码实例以下:java
let s1 = Symbol('脚本之家'); let s2 = Symbol("2015");
经过键就能够比较方便的区分两个Symbol值。
键相同的两个Symbol值并不相同:函数
let s1 = Symbol("脚本之家"); let s2 = Symbol("脚本之家"); console.log(s1 == s2);
上面两个Symbol值是不相等的。
Symbol值不可以被隐式转换为字符串类型,代码实例以下:this
let s = Symbol("脚本之家"); //报错 `antzone ${sym}` //报错 "antzone" + sym