JavaScript比较两个变量是否相等(对象类型比较属性是否相等)
function isEqual(a, b) { // 先检查基本类型是否相等 if (a === b) { return true; } // 如果a, b不是严格相等,则必须a, b都是复杂类型 if (!(a instanceof Object) || !(b instanceof Object)) { return false; } // 判断构造函数是否一样 if (a.constructor !== b.constructor) { return false; } for (var p in a) { if (a.hasOwnProperty(p)) { if (!b.hasOwnProperty(p)) { return false; } if (a[p] === b[p]) { continue; } if (typeof( a[p] ) !== "object") { return false; } if (!Object.equals(a[p], b[p])) { return false; } } } for (p in b) { if (a.hasOwnProperty(p) && !a.hasOwnProperty(p)) { return false; } } return true; }