ES6 对象的新增方法 Object
文章简介
本文是一篇关于ES6中对象的新增方法——Object的知识文章。在文章中会从理论和实践两个角度入手,代码片段可能比较多,需要耐心阅读。本文紧接ES6专栏
ECMAScript(ES6)第三幕之解构赋值篇【字符串&数值布尔值&函数参数的解构赋值&圆括号问题】内容,进一步学习对象的新增方法。创作不易!多多关照!!
主要内容
1 Object.is()
ES5 比较两个值是否相等,只有两个运算符:相等运算符(==) 和 严格相等运算符(===)。
它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。
Object.is就是部署"同值相等"算法的新方法。它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。
Object.is('foo', 'foo')
// true
Object.is({
}, {
})
// false
不同之处只有两个:一是+0不等于-0,二是NaN等于自身。
+0 === -0 //true
NaN === NaN // false
Object.is(+0, -0) // false
Object.is(NaN, NaN) // true
ES5 可以通过下面的代码,部署Object.is。
Object.defineProperty(Object, 'is', {
value: function(x, y) {
if (x === y) {
// 针对+0 不等于 -0的情况
return x !== 0 || 1 / x === 1 / y;
}
// 针对NaN的情况
return x !== x && y !== y;
},
configurable: true,
enumerable: false,
writable: true
});
2 Object.assign()
2.1 基本用法
Object.assign()方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。
const target = {
a: 1 };
const source1 = {
b

&spm=1001.2101.3001.5002&articleId=127095740&d=1&t=3&u=b6d470cee72e47cb9b572e02d0f5822f)
1793

被折叠的 条评论
为什么被折叠?



