Symbol

// symbol表示是唯一值,哪怕值一样,也不会相等
let a1:symbol = Symbol(1)
let a2:symbol = Symbol(1)
// console.log(a1 == a2); // false

// Symbol.for是全局搜索传入的值,如果没有就创建一个,如果有则取值
// console.log(Symbol.for('1') == Symbol.for('1')); true

// Symbol 的作用就是作为唯一的key
let obj = {
  name: 'str',
  [a1]: 1,
  [a2]: 2
}
// {
//   name: 'str',
//   [Symbol(1)]: 1,
//   [Symbol(1)]: 2
// }
console.log(obj);

// for in无法识别到Symbol值,返回name
for(let i in obj){
  console.log(i);
}

// Object.keys无法识别到Symbol值,返回['name']
Object.keys(obj)

// Object.keys无法识别到Symbol值,返回['name']
Object.getOwnPropertyNames(obj)

// 该方法只会返回Symbol的,返回[Symbol(1),Symbol(1)]
Object.getOwnPropertySymbols(obj)

// 能够全部返回,返回['name',Symbol(1),Symbol(1)]
Reflect.ownKeys(obj)

 

posted on 2025-02-15 01:22  ChoZ  阅读(5)  评论(0编辑  收藏  举报

导航