ES6+ 新增对象方法

举报
rockyyee 发表于 2020/07/05 14:20:36 2020/07/05
【摘要】 本片整理记录个人所学 ES6+ 新增对象方法。

ES6+ 新增对象方法

Object.assign()


Object Object.assign(target, ...sources) 将所有可枚举属性的值从一个或多个源对象复制到目标对象


  • 参数:

    • target

      • 目标对象

    • sources

      • 源对象

  • 返回值:

    • 目标对象


Example:

let obj1 = {
    a: 1,
    b: 2
}
let obj2 = {
    a: 5,
    c: 3,
    d: 4
}

Object.assign(obj1, obj2);

//P.s: "目标对象"原a属性会被"源对象"a属性替换,c属性"目标对象"无,则会被添加
console.log(obj1);  //  {a: 5, b: 2, c: 3, d: 4} 

// 源对象不会该表
console.log(obj2);  //  {a: 5, c: 3, d: 4}


通常合并对象,同过展开对象的方式

// 对象合并
let obj1 = {
    a: 1,
    b: 2
}
let obj2 = {
    ...obj1,
    a: 10,
    c: 3,
    d: 4,
    
}
let obj3 = {
    a: 10,
    ...obj1,
    c: 3,
    d: 4,
    
}
// P.s 插入的展开对象顺序会影响结果值
console.log(obj2);  //  {a: 10, b: 2, c: 3, d: 4}

console.log(obj3);  //  {a: 1, b: 2, c: 3, d: 4}



Object.is()


Boolean Object.is(value1, value2) 判断两个值是否是相同的值。 


  • 规则:

    • 两个值都是 undefined

    • 两个值都是 null

    • 两个值都是 true 或者都是 false

    • 两个值是由相同个数的字符按照相同的顺序组成的字符串

    • 两个值指向同一个对象

    • 两个值都是数字并且

      • 都是正零 +0

      • 都是负零 -0

      • 都是 NaN


Example:

// console.log(Object.is(1,"1"));   //  fasle


// console.log(NaN === NaN);   //  false
// let res = Object.is(NaN, NaN);  
// console.log(res);   //  true

console.log(-0 === +0);     //  true
let res = Object.is(-0, +0);
console.log(res);       //  false



对象简洁表示法

  • 属性简洁表示

  • 方法简洁表示


Example:

let a = 0;
let b = 1;



// 原先写法
// let obj = {
//     a: a,
//     b: b,
//     c: function() {
//         console.log("c!!!");
//     }
// }



// 简介写法
let obj = {
    a, 
    b,
    c() {
        console.log("c...");
    }
}



对象的属性名表达式

Example:

let name = "rockyYee";


let obj = {
    [name]: 24
}

conole.log(obj);    // { rockyYee: 24 }


END

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。