ES6 对象的扩展

本文深入探讨ES6中对象的各类新特性,包括对象字面量语法的扩展、属性初始值改写、方法简写、可计算属性名、新增Object.is()与Object.assign()方法、自有属性枚举顺序、对象原型的增强与改变、以及super引用的简化使用。通过这些内容,读者将全面了解ES6如何提升对象功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录 第四章 扩展对象的功能性对象类别对象字面量语法扩展属性初始值的改写对象方法的简写可计算属性名新增方法Object.is()方法Object.assign()方法重复的对象字面量属性自有属性枚举顺序增强对象原型改变对象原型简化原型访问的super引用正式的方法定义

第四章 扩展对象的功能性

对象类别

  • 普通(Ordinary)对象:具有JS对象所有默认内部行为。
  • 特异(Exotic)对象:具有某些与默认行为不符的内部行为。
  • 标准(Standard)对象:ES6规范中定义的对象,如Array、Date等。
  • 内建(Built-in)对象:脚本开始执行时,存在于JS执行环境中的对象。

对象字面量语法扩展

属性初始值的改写

当一个对象的属性与本地变量同名时,不必再写冒号和值,只需要写属性名。

function createPerson (name, age) {
  return {name, age};
}

对象方法的简写

对象中声明方法,不需要冒号和function关键字。

var person = {
  sayName () {
    console.log('name');
  },
};

可计算属性名

对象属性可以用变量表示。

var prefix = 'my';
var person = {
  [prefix + 'number']: '123',       // 等同于 mynumber:'123'
};

新增方法

Object.is()方法

修正全等运算符中的两处疑惑点:

  • +0 === -0
  • NaN !== NaN

Object.assign()方法

实现了类似于mixin的方法。

function mixin (source, supplier) {
  Object.keys(supplier).forEach(function (key) {
    source[key] = supplier[key];
  });
  return source;
}

Object.assign()的好处在于,可以复制访问器属性(get和set)。

重复的对象字面量属性

代码不检查重复属性,对于每一组重复属性,都会选取最后一个取值。

自有属性枚举顺序

基本规则是:

  1. 所有数字键按升序排序
  2. 所有字符串键按照它们被加入的对象的顺序排序
  3. 所有Symbol键按照它们被加入对象的顺序排序

增强对象原型

改变对象原型

添加与Object.getPrototypeOf()相对的Object.setPrototypeOf()方法,用于设置目标对象的__proto__(或理解为[[Prototype]])。

简化原型访问的super引用

super引用相当于指向对象原型的指针,实际上也就是Object.getPrototypeOf(this)的返回值。

super.fn()等效于Object.getPrototypeOf(this).fn.call(this)。

super是静态的,总是指向正确的对象,所以不需要担心运行时的特性。

正式的方法定义

super的所有引用都通过[[HomeObject]]属性来确定后续的运行过程。第一步是在[[HomeObject]]属性上调用Object.getPrototypeOf()方法来检索原型的引用;然后搜寻原型链,找到同名函数;最后,设置this绑定并且调用相应的方法。

转载于:https://www.cnblogs.com/gaogao999/p/11097582.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值