日常刻书

对象扩展后的一些变化

2021-01-20  本文已影响0人  F_wind

《深入理解ES6》阅读随笔

在 JavaScript 中,有一切皆为对象之说,可见其重要性。关于对象的扩展,这里简单列举了一些例子,囊括概念说明以及 ES5 到 ES6 的变化等。

简化语法

function user(id, name) {
  // ES5   
  var info = {
    id: id,
    name: name
  }
  // ES6
  var infos = {
    id,
    name
  }
}
var user{
    // ES5  
getInfo:function(){
        return this.id+":"+this.name
    }
// ES6  
getInfos(){
        return this.id+":"+this.name
    }
}
function user(id, name) {
  var info = {
    id: "new" + id,
    [name]: "new" + name,
  };
  console.log(info)
}
user(1,"age")   // 输出 { id: 'new1', age: 'newage' }

新增功能

// ES5 中的错误结论
NaN === NaN // false 
NaN == NaN // false
(+0 === -0) // true
(+0 == -0) // true
// 使用 Object.is() 可以得到正确结论
Object.is(NaN, NaN) // true
Object.is(+0, -0) // false

重复属性名:在 ES6 中重复定义的属性名采用之后声明覆盖之前声明的方式(ES5 中在非严格模式下会报异常);

原型方面

 var t1 = {
   sayHello: function () {
     return 't1'
   }
 }
 var t2 = {
   sayHello: function () {
     return 't2'
   }
 }
 let tt = Object.create(t1)
 console.log(tt.sayHello()) // 输出 t1
 Object.setPrototypeOf(tt, t2)
 console.log(tt.sayHello())  // 输出 t2

对象属性名枚举时自动排序

上一篇下一篇

猜你喜欢

热点阅读