ES6中对象的拓展方法

86 阅读1分钟

一、Object.is()

"==="在禁止类型转换的条件下对两个值进行转换,我们称之为严格相等运算符。但是严格相等运算符也不一定完全相等,它认为+0与-0相等,而认为NaN与NaN不相等。在这种情况下,我们使用Object.is()来弥补严格相等运算符遗留的怪异缺陷。

console.log(+0 === -0)  #true
console.log(NaN === NaN) #false
console.log(Object.is(+0,-0)) #false
console.log(Object.is(NaN,NaN)) #true

二、Object.assign()

混入(Mixin)是在JS中组合对象时最流行的模式。在一次混入中,一个对象会从另一个对象接收属性和方法。很多JS的库中都有类似下面这样的混入方法:

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

而ES6将混入方法标准化为Object.assign()方法,该方法可以接收多个源对象,将多个源对象的属性复制到目标对象当中。

var receiver = {};
Object.assign(receiver,
    {
        type: "js",
        name: "file.js"
    },
    {
        type: "css"
    }
)
console.log(receiver.type); # css
console.log(receiver.name); # file.js

注意到,如果源对象当中有相同的属性,后面的属性会将前面的属性覆盖。