【symbol数据类型】

//Symbol的初衷:解决对象的属性名冲突
  // 1、声明Symbol
  var num = 10
  var sm1 = Symbol()
  console.log(sm1);
  console.log(typeof sm1);
  var sm2 = Symbol()
  console.log(sm2);
  console.log(sm1 == sm2);
  var sm3 = Symbol('123')
  console.log(sm3);
  // 2、Symbol是独一无二的
  var a =Symbol('a111')
  var b = Symbol('b')
  // 3、
  var obj= {
    a:'a',
    b:'b',
    [a]:'c',
    [b]:'d'
  }
  console.log(obj);
  console.log(obj[a]);
  for(let x in obj){
    console.log(x);
  }
  // 4、Object.getOwnPropertySymbols 函数 获取对象中Symbol属性名
  console.log(Object.getOwnPropertySymbols);
  var arr =Object.getOwnPropertySymbols(obj)
  console.log(obj[arr[0]]);
  // 5、Reflect.ownkeys函数 获取所有的属性
  console.log(Reflect.ownKeys(obj));
  var arr1 = Reflect.ownKeys(obj)
  console.log(...arr1);
  // 6、Object.keys() Object.values() 获取对象中除了Symbol的属性
  console.log(Object.keys(obj));
  console.log(Object.values(obj));
  // 7、Symbol.for函数 函数的作用:根据参数名,去全局环境中搜索是否有以该symbol.for()参数为名的symbol值
                                              // 有就返回他,没有就以该参数名来创建一个新的symbol值
  var smb = Symbol('smb')
  console.log(smb);
  // console.log(Symbol.for('smb'));
  // console.log(Symbol.for('smb1'));
  var smb1  =Symbol.for('smb')
  console.log(smb1);
  var smb2 = Symbol.for('smb')
  console.log(smb2);
  console.log(smb == smb1);   
  console.log(smb1 == smb2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值