前言: 积跬步第二天,该专栏争取日日更新
一. Symbol的基本使用
ES6引入了一种新调原始数据类型Symbol,表示独一无二的值,它是JS语言的第七种数据类型,是一种类似于字符串的数据类型
Symbol 特点 :
1) Symbol的值是唯一的,用来解决命名冲突的问题
2) Symbol的值不能与其他数据进行运算
3) Symbol定义的对象属性不能使用 for...in 循环遍历,但是可以使用 Reflect.ownKeys 来获取对象的所有键名
创建 Symbol :
let s = Symbol();
// console.log(s, typeof s); //唯一性不可见
let s2 = Symbol('晴天蜗牛');
let s3 = Symbol('晴天蜗牛'); // 传入的字符为描述字符串(标识) s2 !== s3
// Symbol.for 创建
let s4 = Symbol.for('晴天蜗牛');
let s5 = Symbol.for('晴天蜗牛'); // 传入的字符串可以作为唯一的值 s4 === s5
// 不能与其他数据进行运算
// let result = s + 100;
// let result = s > 100;
// let result = s + s;
// USONB you are so niubility 数据类型
// u undefined
// s string symbol
// o object
// n null number
// b boolean
向对象中添加方法 up down :
let game = {
name:'蜗牛',
up: function(){},
down: function(){}
};
//声明一个对象
let methods = {
up: Symbol(),
down: Symbol()
};
// 添加方式 1
game[methods.up] = function(){
console.log("我可以发光");
}
game[methods.down] = function(){
console.log("我可以变强");
}
console.log(game);
// 添加方式 2
let youxi = {
name:"狼人杀",
[Symbol('say')]: function(){
console.log("我可以发言")
},
[Symbol('zibao')]: function(){
console.log('我可以自爆');
}
}
console.log(youxi)
二. Symbol 内置值