js對象的比較

来源:互联网 发布:.php是什么文件 编辑:程序博客网 时间:2024/06/11 14:33
   
   項目中需要比較兩個對象是否相等,給Object對象開展了(別緊張,別說我把它污染了),一個實現而已,象java一樣可以只給自己想要的類重寫equals方法。

  1. Object.prototype.equals = function(obj){  
  2.     if(this == obj)   
  3.         return true;  
  4.     if(typeof(obj)=="undefined"||obj==null||typeof(obj)!="object")   
  5.         return false;  
  6.     var length = 0; var length1=0;  
  7.     for(var ele in this) {  
  8.         length++;  
  9.     }                 
  10.     for(var ele in obj) {  
  11.         length1++;  
  12.     }                 
  13.     if(length!=length1)   
  14.         return false;  
  15.     if(obj.constructor==this.constructor){  
  16.         for(var ele in this){  
  17.             if(typeof(this[ele])=="object") {  
  18.                 if(!this[ele].equals(obj[ele]))  
  19.                     return false;  
  20.             }  
  21.             else if(typeof(this[ele])=="function"){  
  22.                 if(!this[ele].toString().equals(obj[ele].toString()))   
  23.                     return false;  
  24.             }  
  25.             else if(this[ele]!=obj[ele])   
  26.                 return false;  
  27.         }  
  28.         return true;  
  29.     }  
  30.     return false;  
  31. }; 

  firefox下示例如下(得安装firebug):

  1. var p1 = {name:"jack",age:18};   
  2. var p2 = {name:"lucy",age:10};   
  3. var p3 = {name:"jack",age:18};   
  4.   
  5.   
  6. console.log(p1.equals(p2));//false   
  7. console.log(p1.equals(p3));//true   
  8. console.log(p1.equals({name:"jack",age:18}));//true 



原创粉丝点击