尝试创建一个简单的深度比较函数,并注意到这段代码在应该为true时返回false。添加了控制台日志以查找缺陷。
for(var prop in obj1){
if(obj1[prop] !== obj2[prop]){
console.log("obj1." + prop + " = " + JSON.stringify(obj1[prop]));
console.log("obj2." + prop + " = " + JSON.stringify(obj2[prop]));
return false;
}
}
var obj = {here: {is: "an"}, object: 2};
console.log(deepEqual(obj, {here: 1, object: 2}));
// → false
console.log(deepEqual(obj, {here: {is: "an"}, object: 2}));
// → true
结果
obj1.here = {"is":"an"}
obj2.here = 1
false
obj1.here = {"is":"an"}
obj2.here = {"is":"an"}
false
所以我可以告诉for ... in prop方法似乎正在起作用,因为它比较'here'例如。这很好。我认为它们在第二个console.log中是相同的,所以我认为答案是使用不同的方式来比较它们,因为它仍然可以通过引用来评估它们?