JavaScript对象(ES6)(一)

对象的扩展

  • ES6允许对象之中直接写变量和函数,作为对象的属性和方法(这种方法叫简洁表示法)

      var foo='bar'; var obj={foo}; obj  ==> foo:"bar"
      function getPoint(){
      	var x=1; 
      	var y=10; 
      	return {x,y};
      } 
      getPoint(); ==>{x:1,y:10}
    
  • ES6允许字面量定义对象时,用表达式作为对象的属性名

      var lastWord='last word'; 
      var a={
      	'first world':'hello',
      	[lastWord]:'world'
      }; 
      a[lastWord]  ==>"world"
    
  • 表达式也可以用来定义方法名:

      let obj={
      	['h'+'ello'](){
      		return 'hi';
      	}
      }
      obj.hello() ==>hi
    
  • 属性名表达式与简洁表示法,不能同时使用,否则会报错

      var foo='bar'; 
      var bar='abc'; 
      var baz={[foo]}; 这种形式是错误的 
      ---------------手动分割线---------------------
      var foo='bar';
      var baz={[foo]:'abc'};  必须这样写完整
    
  • 属性名表达式如果是一个对象,默认情况下会自动将对象转为字符串[Object Object]

      const keyA={a:1};
      const keyB={b:2};
      const obj={
      	[keyA]:'valueA',
      	[keyB]:'valueB'
      }
      obj;  ==>{[object Object]: "valueB"}  [keyA]、[keyB]都转化为[Object Object],后者覆盖前者,得到valueB
    
  • 如果对象的方法是Symbol值,name属性返回的是这个Symbol值的描述

      const key1=Symbol('description');
      const key2=Symbol();
      let obj={
      	[key1](){},
      	[key2](){}
      };
      obj[key1].name;  ==>"description"
      obj[key2].name;  ==>""
    
  • Object.is()用于比较两个值是否严格相等,与严格比较运算符 === 行为基本一致

     Object.is('foo','foo')  ==>true
     Object.is({},{})  ==>true
     //不同之处有两个:
     +0=== -0  ==>true
     NaN===NaN ==>false
     Object.is(+0,-0)   ==>false
     Object.is(NaN,NaN) ==>true
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值