「日更_ES6」2. Symbol

53 阅读1分钟

前言: 积跬步第二天,该专栏争取日日更新

一. 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 内置值

image.png