美文网首页
es6中对象扩展

es6中对象扩展

作者: 单只蝴蝶_569d | 来源:发表于2020-08-21 14:41 被阅读0次

对象

对象是js最重要的一个数据类型,在es6中,对象的功能也得到了增强

对象的函数简写

  • 对象简写
    在es5中对象的函数写法
const person={
    getname:function(){
        return '张三'
    }
}

在es6中的写法可以简写为

const person={
    getname(){
        return '张三'
    }
}

并且在es6中,对象中变量不可重复,不然会报错

  • 计算属性名
var suffix = " name";
var person = {
 ["first" + suffix]: "Nicholas",
  ["last" + suffix]: "Zakas"
};

对象的增强

setPropertypeOf 修改原型对象

对象的原型增强,es5中对象原型是在创建的过程中创建的,es6中新增了原型的修改.以下例子,将person1对象的原型修改为person对象中

const person={
    getName(name){
        console.log(12)
        return name;
    }
  }

 const person1={
}
let friend=Object.create(person) // 创建一个对象friend,原型为person
Object.setPrototypeOf(person1,person) // 将原型设置为person
 console.log(person1.getName('zhng')) 

super

在es5中,调用原型的函数时,需要以以下方式

let person = {
  getGreeting() {
    return "Hello";
  }
};
let friend = {
   getGreeting() {
     return Object.getPrototypeOf(this).getGreeting.call(this) + ", hi!";
   }
};
// 将原型设置为 person
Object.setPrototypeOf(friend, person);
console.log(friend.getGreeting()); // "Hello,hi"

在es5中调用函数的原型主要使用Object.getPrototypeOf 来获取对象的原型,call(this),是为了保证原型方法中this值的指向,在使用的过程中比较复杂。并且多层原型继承,容易出现this指向问题
super关键字用于访问和调用一个对象的父对象上的函数。super关键字只能用于简写的函数写法,在有function关键词的函数中无效.使用super关键词改写以上的例子如下:

let person = {
getGreeting() {
return "Hello";
}
};
let friend = {
getGreeting() {
return super.getGreeting() + ", hi!";
}
};
// 将原型设置为 person
Object.setPrototypeOf(friend, person);
console.log(friend.getGreeting()); // "Hello,hi"

super关键词总能指向正确的原型对象

### 新增的方法
* Object.is(obj1,obj2)
  当在 JS 中要比较两个值时,你可能会使用相等运算符( == )或严格相等运算符( ===)。为了避免在比较时发生强制类型转换,许多开发者更倾向于使用后者。但严格相等运算符也并不完全准确,例如,它认为 +0 与 -0 相等,即使这两者在 JS 引擎中有不同的表示;另外 NaN === NaN 会返回 false ,因此有必要使用 isNaN() 函数来正确检测 NaN 。
   因此在es6中引入了Object.is方法来弥补以上问题,object.is可以传入2个参数,当2着的值时,返回true。否则返回false

Object.is(5, 5) //true

在许多情况下, Object.is() 的结果与 === 运算符是相同的,仅有的例外是:它会认为+0 与 -0 不相等,而且 NaN 等于 NaN 。不过仍然没必要停止使用严格相等运算符,选择 Object.is() ,还是选择 == 或 === ,取决于代码的实际情况。
* Object.assign(obj1,obj2)
将obj2对象的属性和值合并到对象obj1中





相关文章

  • es6的数值,函数,字符串扩展

    一、es6的数值扩展 二、es6的函数扩展 代码效果:对象解构在函数中的应用 三、es6字符串扩展 常用方法 代码...

  • 扩展对象的功能性.md

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

  • 2018-08-24

    ES6对象的扩展

  • es6之扩展运算符 三个点(...)

    es6之扩展运算符 三个点(...)对象的扩展运算符数组的扩展运算符总结es6之扩展运算符 三个点(…)对象的扩展...

  • ES6扩展归纳

    ES6扩展归纳 介绍ES6相比与ES5在原有对象上的扩展,包括字符串、正则、数值、函数、数组、对象等扩展,本文是阮...

  • es6中对象扩展

    对象 对象是js最重要的一个数据类型,在es6中,对象的功能也得到了增强 对象的函数简写 对象简写在es5中对象的...

  • es6之扩展运算符 三个点(...)

    es6之扩展运算符 三个点(…) 对象的扩展运算符理解对象的扩展运算符其实很简单,只要记住一句话就可以:对象中的扩...

  • ES6之数组和对象的扩展

    ES6中数组的扩展主要基于...扩展运算符,对象的扩展则是基于它本身的属性和简写上的扩展。首先说一下都会涉及...

  • es6笔记

    es6 对象扩展方法is() 全等比较Object.is(NaN,NaN) // trueassign() 对象合...

  • ES6新增特性(二)

    ES6 的内置对象扩展 Array 的扩展方法 一、Array 的扩展方法 1. 扩展运算符(展开语法) 扩展运算...

网友评论

      本文标题:es6中对象扩展

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