1、symbol的介绍与创建
1)js的数据类型:USONB(you are so niubility)
u : undefied
s : string、symbol
o : object
n : null、number
b : boolean
2) Symbol特点
- Symbol 的值是唯一的,用来解决命名冲突的问题
- Symbol 的值不能与其他数据进行运算
- Symbol 定义的对象属性不能使用 for…in循环遍历,但是可以使用 Reflect.ownkeys 来获取对象的所有键名
3) 创建Symbol
//1、Symbol()
let s = Symbol();
console.log(s,typeof s);//Symbol() 'symbol'
let s2 = Symbol('小红');
console.log(s2)//Symbol(小红)
let s3 = Symbol('小红');
console.log(s2 === s3)//false
//2、Symbol.for()
let s4 = Symbol.for('小红');
console.log(s4)//Symbol(小红)
let s5 = Symbol.for('小红');
console.log(s4 === s5)//true
2、symbol 创建对象属性
let game = {
up:function(){
console.log(123)
},
name:'俄罗斯方块',
down:function(){
console.log(456)
}
};
//方法1
//声明一个对象
let methods = {
up:Symbol(),
down:Symbol()
};
game[methods.up] = function(){
console.log('我可以改变形状')
}
game[methods.down] = function(){
console.log('我可以快速下降')
}
console.log(game)
//方法二
let youxi = {
name:"狼人杀",
[Symbol('say')]:function(){
//Symbol('say')是一个表达式,是一个动态的,必须要用中括号
console.log("我可以发言")
},
[Symbol('zibao')]:function(){
console.log("我可以自曝")
},
};