symbol详解

1.symbol概念:数据类型,不是函数,表示不会重复的值
2.for和keyFor
3.symbol作用

定义
let s1 = Symbol('first');
let s2 = Symbol('second');

console.log(s1 === s2)

console.log(s1,s2)

//重复使用某个唯一的symbol
let s1 = Symbol('first');

Symbol.for定义后,会在全局注册一个key-symbol的键值对,后面可以通过key来获取生成的symbol
let s2 = Symbol.for('second')

let s3 = Symbol('first')
let s4 = Symbol.for('second');
let s5 = Symbol.for('first');

console.log(s1 === s3) //false
console.log(s2 === s4) //true
console.log(s1 === s5) //false


Symbol.keyfor通过某个symbol值,获取对应的key值
symbol.for是通过key来找symbol,正好与上面相反

Symbol.keyFor(s1) //undefiend
Symbol.keyFor(s2) //second


Symbol的使用
继承的时候


let obj = {
    username:'tom',
    age:19,
    sex:'man',
    username:'mickey'
}

console.log(obj)

==============
let username = Symbol();
let obj = {
    username:'tom',
    age:19,
    sex:'man',
    [username]:'mickey'
}

console.log(obj)

//symbol不能被for-in/for-of 所遍历,需要reflect来遍历
for(let filed in obj){
    console.log(filed) //symbol值不能打印
}

for(let [key,value] of Object.entries(obj)){
    console.log(key,value); //symbol值不能打印
}

 

 

原文地址:https://www.cnblogs.com/lisa2544/p/15654628.html