Object.is( )
Object.is 方法只能判断这两个对象的引用地址是否一致,但是要比对两个对象的内容是否相等时就不能用这个方法了
let obj1 = {
a: 11,
b: 22
}
let obj2 = {
a: 11111111111,
b: 22222222222
}
let obj3 = obj2
console.log('obj1 VS obj2:', Object.is(obj1, obj2));
console.log('obj3 VS obj2:', Object.is(obj3, obj2));
在前端,总是需要到要判断两个对象的值是否相等,如果是单纯判断无论如何都是不相等的,因为他们的内存地址不同,所以我们需要自己更深入去判断。
1. 当然是先最简单的 如果传入的不是复杂类型就直接判断两个值是否相等
let o1 = obj1 instanceof Object;
let o2 = obj2 instanceof Object;
if(!o1 || !o2) { // 如果不是对象 直接判断数据是否相等
return obj1 === obj2
}
2. 如果是复杂类型,那么判断两个对象的属性长度是否相等
if(Object.keys(obj1).length !== Object.keys(obj2).length)