ES6 Symbol

2021/8/2 23:10:28

本文主要是介绍ES6 Symbol,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

let s = Symbol()
console.log(typeof s)

// 带参数,表示对Symbol实例的描述
let s1 = Symbol('foo')
let s2 = Symbol('bar')
console.log(s1 , s1.toString())
console.log(s2, s2.toString())

//当参数是一个对象时,会调用该对象的toString方法,
const obj = {
    toString(){
        return 'abc';
    }
};
const sym = Symbol(obj);
console.log(sym)    // Symbol(abc)
console.log(sym.description)  // abc

// symbol作为属性名来使用
let mySymbol = Symbol();

// 第一种写法
let a = {};
a[mySymbol] = "hello! a";

// 第二种写法
let b = {
    [mySymbol]: 'hello,B!'
}

//第三种
let c = {};
Object.defineProperty(c, mySymbol, {value: 'hello!! C'});

console.log(a[mySymbol])    // hello! a
console.log(b[mySymbol])    // hello,B!
console.log(c[mySymbol])    // hello!! C

// symbol作为属性名时,不能使用点运算符
const d = {};
d.mySymbol = "Hello! d"; // 当使用点运算符时,点后面总是字符串,mySymbol作为一个字符串来使用,而不是一个Symbol值.
console.log(d[mySymbol])  // 输出undefined
console.log(d['mySymbol'])  // 输出 字符串Hello! d

//在对象内部使用时,定义属性时,必须放在方括号之中
let o ={
    [s] :function (arg) {
        return s.toString() +'必须放在方括号中,参数为:' + arg  // Symbol()必须放在方括号中,参数为:123
    }
};
console.log(o[s](123))
//上面例子更简洁的写法
const OBJ= {
    [s](arg){
        return s.toString() +'必须放在方括号中,参数为:' + arg
    }
}
console.log(OBJ[s](123)) //输出结果和上面的一样


来自为知笔记(Wiz)



这篇关于ES6 Symbol的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程