JS判断两个值是否相等
const isEquals = (a, b) => {
if (a === b) return true
if (a instanceof Date && b instanceof Date) return a.getTime() === b.getTime()
if (!a || !b || (typeof a !== 'object' && typeof b !== 'object')) return a === b
if (a.prototype !== b.prototype) return false
if (a.constructor.name !== b.constructor.name) return false
let keys = Object.keys(a)
if (keys.length !== Object.keys(b).length) return false
return keys.every((k) => equals(a[k], b[k]))
}
isEquals([1, 2], [1, 2]) // true