ES6 Symbol的介绍与创建
ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值。它是JavaScript语言的第七种数据类型。
u :undefined
s :string symbol
o :object
n :null number
b :boolean
Symbol的特点:
- Symbol 的值是唯一的,用来解决命名冲突的问题
- Symbol 值不能与其他数据进行运算
- Symbol 定义的对象属性不能使用 for…in 循环遍历,但是可以使用
Reflect.ownKeys 来获取对象的所有键名。
//创建Symbol
let s = Symbol();
console.log(s); // Symbol()
//创建Symbol,传入字符串
let s2 = Symbol('abc');
let s3 = Symbol('abc');
//这就好比世界上有两个人的名字一样但是他们的身份证号不一样
console.log(s2 === s3); //false
//Symbol.for创建
let s4 = Symbol.for('abc');
let s5 = Symbol.for('abc');
console.log(s4 === s5); //true
//不能与其他数据进行运算
let s6 = Symbol();
let result = s6 + 100; //报错
let result2 = s6 + '100'; //报错
对象添加Symbol类型的属性
//当我们想在一个对象中添加方法,但是不确定对象中是否已经存在此方法,可以使用Symbol完成
//第一种方法:
let game={...
let methods = {
up:Symbol(),
down:Symbol()
}
game[methods.up] = function(){
}
//第二种方法:
let youxi = {
name:'game',
[Symbol('say')]:function(){
}
}