一、Symbol函数前不能使用new,否则会报错
let s = new Symbol('ss')
console.log(s)
//TypeError: Symbol is not a constructor
二、Symbol函数可以接受一个字符串作为参数,表示对Symbol实例的描述,主要是为了在控制台显示,或者转化为字符串时,比较容易区分。
三、Symbol作为属性,该属性不能出现在for…in,for…of循环中,也不会被Object.keys(),Object.getOwnPropertyNames(),JSON.stringify()返回
let s = Symbol(11)
let obj = {
name:"dmc",
age: 20,
[s]: 'hhhh'
}
for(let i in obj) {
console.log(i)
}
//name,age
let s = Symbol(11)
let obj = {
name:"dmc",
age: 20,
[s]: 'hhhh'
}
console.log(Object.keys(obj)) //['name', 'age']
let s = Symbol(11)
let obj = {
name:"dmc",
age: 20,
[s]: 'hhhh'
}
console.log(Object.getOwnPropertyNames(obj)) //['name', 'age']
let s = Symbol(11)
let obj = {
name:"dmc",
age: 20,
[s]: 'hhhh'
}
console.log(JSON.stringify(obj))
// {"name":"dmc","age":20}
四、Object.getOwnPropertySymbols方法返回一个数组,成员是当前对象的所有用作属性名的 Symbol 值
let s = Symbol(11)
let obj = {
name:"dmc",
age: 20,
[s]: 'hhhh'
}
console.log(Object.getOwnPropertySymbols(obj))
//[Symbol(11)]
五、Symbol.for 接受一个字符串作为参数,然后搜索有没有以该参数作为名称的 Symbol 值。如果有,就返回这个 Symbol 值,否则就新建并返回一个以该字符串为名称的 Symbol 值。
let s = Symbol.for('hhh')
let s1 = Symbol.for('hhh')
console.log(s === s1) //true
六、Symbol.keyFor方法返回一个已登记的Symbol类型的值的key
let s = Symbol.for('hhh')
let s1 = Symbol.for('hhh')
console.log(Symbol.keyFor(s)) //hhh
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_47450807/article/details/123398189
内容来源于网络,如有侵权,请联系作者删除!