先判断两个参数是否全等,全等return true;否则取两个参数的prototypeNames数组,长度不等必然不全等,return false,循环其一数组,判断类型,如果是对象类型继续调用方法(与深拷贝类似)。(未处理数组类型,待完善)
function deepEqual (first, second) {
if (first === second) {
return true;
}
// let arr1 = Object.keys(first);
let arr1 = Object.getOwnPropertyNames(first);
let arr2 = Object.getOwnPropertyNames(second);
if (arr1.length !== arr2.length) {
return false;
}
for (let i = 0; i < arr1.length; i++) {
let key = arr1[i];
if (typeof first[key] === 'object') {
deepEqual(first[key], second[key]);
} else {
return first[key] === second[key];
}
}
}