先判断两个参数是否全等,全等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];}}}
