Object.prototype.equals = function(){
let type = typeof this
let allArguments = null
let result = false
if(type === 'function' && this instanceof Object){
console.log('functionaaa')
if(arguments.length > 1){
result = true
for(let i = 0;i <= arguments.length - 2;i++){
result = equal(arguments[i],arguments[i+1])
if(!result)break
}
}else{
result = true
}
}else if(type === 'object'){
console.log('functionbbb')
allArguments = [this,...arguments]
if(allArguments.length > 1){
result = true
for(let i = 0;i <= allArguments.length - 2;i++){
result = equal(allArguments[i],allArguments[i+1])
if(!result)break
}
}else{
result = true
}
}else{
result = false
}
function equal(a,b){
let res = true
if(typeof a !== typeof b)res = false
if(a instanceof Object && !(a instanceof Array) && res){
let keys = [...Object.keys(a),...Object.keys(b)]
for(let i = 0;i<keys.length;i++){
if(!res)break
res = equal(a[keys[i]],b[keys[i]])
}
}else if(a instanceof Array && res){
res = a.length === b.length
for(let i = 0;i<a.length;i++){
if(!res)break
res = equal(a[i],b[i])
}
}else{
res = a === b
}
return res
}
return result
}
let a = {a:1}
let b = {}
function c(){return {}}
let q = c.equals(2,2)//let q = c().equals(2,2)
let w = Object.equals({a:1},{a:1},{a:2})
let e = a.equals({a:1},{a:2})
console.log(q,w,e)
版权声明:本文为qq_38962010原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。