一、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
注意到,如果源对象当中有相同的属性,后面的属性会将前面的属性覆盖。