Symbol

58 阅读1分钟
  • Symbol属于原始值而非引用类型,因此不能使用new关键字
let person = {
    name: "派派",
    age: 18
}
const name_ = Symbol("name_")
person[name_] = "派翠克"

console.log(Object.getOwnPropertyNames(person)) // ['name', 'age']
console.log(Object.keys(person)) // ['name', 'age']
console.log(Object.getOwnPropertySymbols(person)) 
//可以通过Object.getOwnPropertySymbols()获取包含所有Symbol属性的数组
  • Symbol具有唯一性
Symbol() === Symbol() //false
  • 利用Symbol.for()可以创建共享的Symbol,如果已存在返回已有的Symbol。
const s1 = Symobl.for('派大星')
const s2 = Symobl.for('海绵宝宝')
s1 === s2 //true
  • 可以使用Symbol.keyFor()返回已登记Symbol有关的键
const s1 = Symobl('派大星')
console.log(Symbol.key(s1))