ES6-Symbol

Symbol实际上是ES6引入的一种原始数据类型,除了Symbol,JavaScript还有其他5种数据类型,分别是Undefined、Null、Boolean、String、Number、对象,这5种数据类型都是ES5中就有的。

1、创建实例:symbol不能用new命令来实例化,否则报错。

// symbol 的实例
let sy1 = Symbol('key1');
let sy2 = Symbol('key1');
let sy3 = Symbol('key3');
console.log(sy1); // Symbol('key1');
console.log(sy1 === sy2); // false
console.log(typeof (sy1)); // 'symbol'

symbol的参数是一个字符串,也可以是一个对象,会把对象调用toString进行转换

2、symbol 的作用是防止对象属性名都是字符串容易造成属性名的冲突。 

console.log(sy1 === sy2); // false
sy1 不等于 sy2 是因为symbol表示独一无二的值。
let obj = {
    name: 'tom' 
}
obj.name = 'lusi';

 这里的obj.name被重写了,

3、symbol的作用:

const COLOR_red = Symbol('red');
const COLOR_yellow = Symbol('yellow');
const COLOR_blue = Symbol('blue');
            
function getConstantName(color) {
    switch (color) {
        case COLOR_red :
        return "COLOR_RED";
        case COLOR_yellow :
        return "COLOR_YELLOW ";
        case COLOR_blue:
        return "COLOR_BLUE";
        default:
            // throw new Exception('Can\'t find this color');
            return "COLOR_not";
        }
}
console.log(getConstantName(COLOR_red));                

 

posted @ 2019-11-29 14:26  花先生。  阅读(269)  评论(0编辑  收藏  举报