(二)13.Symbol语法19-08-09

2019-08-09  本文已影响0人  你坤儿姐
WechatIMG75.png
{
  //声明
  let a1=Symbol();
  let a2=Symbol();
  console.log(a1===a2);

  let a3=Symbol.for('a3');
  //这里'a3'相当于一个key值,使用Symbol.for的时候首先查找这个是否定义过,如果定义过就直接取出使用
  let a4=Symbol.for('a3');
  console.log(a3===a4);
}

打印结果:
false
true

{
  let a1=Symbol.for('abc');
  let obj={
    [a1]:'123',
    'abc':345,
    'c':456
  };
  console.log('obj',obj);

 //使用常规的for in和let of是取不到Symbol属性的
  for (let[key,value] of Object.entries(obj)){
    console.log('let of',key,value);
  }

  //这是需要使用getOwnPropertySymbols()
  //forEach()是数组的方法
  Object.getOwnPropertySymbols(obj).forEach(function (item) {
    console.log(obj[item]);//这时就能拿到Symbol属性的值了
})
  //getOwnPropertySymbols()只能拿到Symbol属性的值
  //这里要拿到所有的的值需要使用 Reflect.ownKeys这个属性
  Reflect.ownKeys(obj).forEach(function (item) {
    console.log('ownkeys',item,obj[item]);
  })

}

打印结果:
obj {abc: 345, c: 456, Symbol(abc): "123"}

let of abc 345
let of c 456

123

ownkeys abc 345
ownkeys c 456
ownkeys Symbol(abc) 123

上一篇下一篇

猜你喜欢

热点阅读