美文网首页
扩展对象的功能性

扩展对象的功能性

作者: McDu | 来源:发表于2020-08-09 12:17 被阅读0次
  1. Object.assign()不能将提供者的访问器属性复制到接收对象中。由于Object.assign()方法执行了赋值操作,因此提供者的访问器属性最终会变为接收对象中的一个数据属性。
var receiver = {},
  supplier = {
    get name() {
         return 'abc';
    }
  }

Object.assign(receiver, supplier);

var desc = Object.getOwnPropertyDescriptor(receiver, 'name');

console.log(desc.value); // 'abc'
console.log(desc.get); // undefined
  1. 重复属性,es5严格模式报错,es6取最后一个属性。
  2. 自由属性枚举顺序
  1. 所有数字键按升序排序。
  2. 所有字符串键按它们被加入对象的顺序排序。
  3. 所有 symbol 键按它们被加入对象的顺序排序。

可用 Object.keys()Object.getOwnPropertyNames()Reflect.ownKeys() 验证。

对于for-in 循环,由于并非所有厂商都遵循相同的实现方式,因此仍未指定一个明确的枚举顺序;而Object.keys()JSON.stringify() 都指明与 for-in 使用相同的枚举顺序,因此它们的枚举顺序目前也不明晰。

增强对象原型

  1. 改变对象的原型:Object.setPrototypeOf()
    对象原型的真实值被储存在内部专业属性[[Prototype]]中,调用Object.getPrototypeOf() 返回储存在其中的值,调用Object.setPrototypeOf() 改变其中的值。这不是操作[[Prototype]]值的唯一方法。

  2. 简化原型访问的super引用
    super.getGreeting() 相当于在当前上下文中调用Object.getPrototypeOf(this).getGreeting.call(this)(多重继承有问题,super不会), 同样,可通过 super 引用调用对象原型上所有其他的放个。必须要在使用简写方法的对象中使用super引用。

  3. es6 正式将方法定义为一个函数,该方法会有一个内部的[[HomeObject]] 属性来容纳这个方法从属的对象。
    非对象的方法则没有这个属性。
    使用super引用时非常有用,super的所有引用都是通过[[HomeObject]] 来确定后续的运行过程。

    1. [[HomeObject]]属性上调用Object.getPrototypeOf()方法来检索原型的引用;
    2. 搜寻原型找到同名函数;
    3. 设置this绑定并调用相应的方法。

super.getGreeting() 等同于 father.getGreeting.call(this).

相关文章

  • 扩展对象的功能性

    Object.assign()不能将提供者的访问器属性复制到接收对象中。由于Object.assign()方法执行...

  • <<深入理解ES6>>记:四

    第4章 扩展对象的功能性 1.对象字面量语法扩展 属性初始值的简写 对象方法的简写语法 可计算属性名(Comput...

  • 扩展对象的功能性.md

    对象扩展 对象类别 在ES6中,对象分为下面几种叫法。 普通对象 特异对象 标准对象 内建对象 对象字面量语法拓展...

  • Object扩展对象的功能性

    对象字面量的扩展方法 1属性初始值的简写 案例一 (在e5版本) function createP...

  • ES6学习笔记二 (扩展对象的功能性、解构、Symbol)

    第四章 扩展对象的功能性 1. 对象字面量语法扩展 直接看例子 ES6中通过属性初始化的简写语法,可以消除这种属性...

  • 4. 扩展对象的功能性

    1. 对象类别 普通对象:具有JS对象所有的默认内部行为 特异对象:具有某些与默认行为不同的行为 标准对象:ES6...

  • ES6 扩展的对象功能性

    本文来自深入理解ES6 对象类别 普通对象: 具有js对象所有默认内部行为特异对象: 具有某些与默认行为不符的内部...

  • ES6学习-扩展对象的功能性

    在JavaScript中,几乎每一个值都是某种特定类型的对象,所以ES6加强了对象的功能性。 对象类别 ·普通对象...

  • 【ES6 笔记】扩展对象的功能性

    对象类别 普通( Ordinary )对象:具有JavaScript对象所有的默认内部行为; 特异( Exotic...

  • es6学习-扩展对象的功能性

    更好的判断是否相等 Object.is():方法判断两个值是否是相同的值,Object.is 不会做这种类型转换。...

网友评论

      本文标题:扩展对象的功能性

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