请问大家 js中有没有什么简单的方法比较两个对象是否相等

如题 就像下面的两个
objA={ a:'123', b:'456' };

objB={ a:'123', b:'000' };

很明显不等 应该返回false 求解答

objA == objB
本来就返回false

没有,需要自己加比较方法

 <script>
Object.prototype.equals = function(obj){ 
if(this == obj) 
return true; 
if(typeof(obj)=="undefined"||obj==null||typeof(obj)!="object") 
return false; 
var length = 0; var length1=0; 
for(var ele in this) { 
length++; 
} 
for(var ele in obj) { 
length1++; 
} 
if(length!=length1) 
return false; 
if(obj.constructor==this.constructor){ 
for(var ele in this){ 
if(typeof(this[ele])=="object") { 
if(!this[ele].equals(obj[ele])) 
return false; 
} 
else if(typeof(this[ele])=="function"){ 
if(!this[ele].toString().equals(obj[ele].toString())) 
return false; 
} 
else if(this[ele]!=obj[ele]) 
return false; 
} 
return true; 
} 
return false; 
}; 
objA={ a:'123', b:'456' };
objB={ a:'123', b:'000' };
alert(objA.equals(objB));
objC={ a:'123', b:'456' };
alert(objA.equals(objC));
</script>

转为字符串后比较

 objA={ a:'123', b:'456' ,c:function(){return 1}};

objB={ b:'456', a:'123' ,c:function(){return 1}};
var sA=[],sB=[];
for(attr in objA)sA.push(attr+':'+objA[attr])
for(attr in objB)sB.push(attr+':'+objB[attr])
sA.sort(function(a,b){return a.split(':')[0]>b.split(':')?1:-1;});
sB.sort(function(a,b){return a.split(':')[0]>b.split(':')?1:-1;});
console.log(sA.join())
console.log(sB.join())
alert(sA.join()==sB.join())