for ... in object property comparison

时间:2016-07-28 15:01:56

标签: javascript

尝试创建一个简单的深度比较函数,并注意到这段代码在应该为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中是相同的,所以我认为答案是使用不同的方式来比较它们,因为它仍然可以通过引用来评估它们?

0 个答案:

没有答案