文章目录
1.Object.is(两个值是否完全相等)
Object.is用来判断两个值是否完全相等。
<script>
console.log(Object.is(100, 100));//true
console.log(Object.is(100, 100.01));//false
console.log(Object.is(0.1 + 0.2, 0.3));//false
</script>
它也是不能解决精度缺失问题的。
它类似于全等===,但是也有所不同
<script>
console.log(+0 === -0);//true
console.log(NaN === NaN);//false
console.log(Object.is(NaN, NaN));//true
console.log(Object.is(+0, -0));//false
</script>
Object.is在严格等于的基础上修复了一些特殊情况下的失误,具体来说就是+0,-0,
NaN和NaN。
Object.is源码如下:
<script>
function is(x, y) {
if (x === y) {
// 1/+0=+Infinity,1/-0=-Infinity,是不一样的
return x !== 0 || y !== 0 || 1 / x === 1 / y;
}
else {
//对NaN===NaN是false进行拦截,x!==x那么一定是NaN,y同理
//都为NaN时true&&true 返回true
return x !== x && y !== y;
}
}
</script>
2. Object.assign( 对象的合并)
语法:
Object.assign(left,right)
将对象left与对象right进行合并,如果left、right共有属性,则right将left此属性覆盖。
如
<script>
const Person = {
name: 'xy',
sex: '男'
}
const Info = {
name: 'xx',
age: 21,
eat: function () {
console.log('吃饭');
}
}
console.log(Object.assign(Person, Info));
</script>
3. Object.setPrototypeOf(设置原型对象) Object.getPrototypeOf(得到原型对象)
<script>
let obj1 = {
name: 'xy',
age: '21'
}
let obj2 = {
name: 'xx',
age: '20'
}
Object.setPrototypeOf(obj1, obj2);
console.log(obj1);
console.log(Object.getPrototypeOf(obj1));
</script>