美文网首页日常刻书
对象扩展后的一些变化

对象扩展后的一些变化

作者: F_wind | 来源:发表于2021-01-20 23:19 被阅读0次

《深入理解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
    }
}
  • 可计算属性名:在 ES6 中,可以动态生成对象的属性名,就像下面这个例子,可以自定义一个 name 变量的属性;
function user(id, name) {
  var info = {
    id: "new" + id,
    [name]: "new" + name,
  };
  console.log(info)
}
user(1,"age")   // 输出 { id: 'new1', age: 'newage' }

新增功能

  • Object.is(value1, value2) :可以比较两个对象是否相等,重点解决 == 和 === 无法处理的情况,比如:
// 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
  • Object.assign(obj1, obj2) :可以将 obj2 的所有内容浅拷贝到 obj1 中(除了后面新增的 super);

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

原型方面

  • 修改原型指向:在 ES5 中,只能通过 getPrototypeOf
    的方式获取原型指向。而在 ES6 中,新增了 setPrototypeOf 的方式,用于修改原型的指向;
 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
  • 新增 super :解决原型多重指向的问题(这块内容个人感觉有点多,计划是放在明天或者后面有时间,单独用一篇文章来说一下);

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

  • 数字升序;
  • 字符串根据输入先后进行排序;
  • symbol 也是根据输入先后进行排序(symbol 也是 ES6 的一个新特性,后面看到额时候再介绍)。

相关文章

  • 对象扩展后的一些变化

    《深入理解ES6》阅读随笔 在 JavaScript 中,有一切皆为对象之说,可见其重要性。关于对象的扩展,这里简...

  • SE6扩展和Vue

    在上一篇文章末尾已经介绍过几种SE6的扩展了,今天带来一些使用的方法. 字符串扩展 数值扩展 数组扩展 对象扩展 ...

  • JQuery插件

    类扩展: 对象扩展:

  • ECMAScript6--4.正则扩展

    1.正则新增特性 构造函数的变化 正则方法的扩展字符串处理的一些正则方法,在ES6中已经是调用了正则对象的方法; ...

  • 《ECMAScript 6 入门》笔记

    变量的解构赋值 字符串的扩展 正则的扩展 数值的扩展 函数的扩展 数组的扩展 对象的扩展 对象的新增方法 表单验证...

  • 对象的扩展

    属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 Object.is(...

  • 对象的扩展

    对象的扩展 属性和方法简写 var foo ='bar' var baz = {foo} <=> va...

  • 对象的扩展

    1、属性方法的简洁表示 属性简写 var foo='foo'; var goo= {'foo':foo};可以写成...

  • 对象的扩展

    属性的简洁表示法 属性名表达式 方法的 name 属性 Object.is() Object.assign() 属...

  • 对象的扩展

    属性的简结表示法 属性名表达式 Object.is() Object.assign() Object.keys()...

网友评论

    本文标题:对象扩展后的一些变化

    本文链接:https://www.haomeiwen.com/subject/gsglzktx.html