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值不能打印 }