js对象的比较

 更新时间:2011年02月26日 12:54:45   作者:  
项目中需要比较两个对象是否相等,给Object对象开展了(别紧张,别说我把它污染了),一个实现而已,象java一样可以只给自己想要的类重写equals方法。
复制代码 代码如下:

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;
};

示例如下:
复制代码 代码如下:

var p1 = {name:"jack",age:18};
var p2 = {name:"lucy",age:10};
var p3 = {name:"jack",age:18};
console.log(p1.equals(p2));//false
console.log(p1.equals(p3));//true
console.log(p1.equals({name:"jack",age:18}));//true

相关文章

  • 面向对象的javascript(笔记)

    面向对象的javascript(笔记)

    面向对象的javascript之学习笔记,需要学习的朋友可以参考下,脚本之家之前更新了不少这方便的文章。
    2009-10-10
  • JavaScript 设计模式 安全沙箱模式

    JavaScript 设计模式 安全沙箱模式

    沙箱模式常见于YUI3 core,它是一种采用同一构造器(Constructor)生成彼此独立且互不干扰(self-contained)的实例对象,而从避免污染全局对象的方法
    2010-09-09
  • JavaScript 常见对象类创建代码与优缺点分析

    JavaScript 常见对象类创建代码与优缺点分析

    这几种javascript类定义方式中,最常用的是杂合prototype/constructor 和 动态prototype方式。
    2009-12-12
  • js另类写法

    js另类写法

    ju 应该是一个定义了各种方法对象 function(b) 的 b 就是 b(a[d], d) 中的参数 a[d] C 是统计方法数量的函数
    2008-03-03
  • JavaScript 三种创建对象的方法

    JavaScript 三种创建对象的方法

    JavaScript中对象的创建有以下几种方式 使用内置对象 使用JSON符号 自定义对象构造。大家可以参考下。
    2009-10-10
  • js对象的比较

    js对象的比较

    项目中需要比较两个对象是否相等,给Object对象开展了(别紧张,别说我把它污染了),一个实现而已,象java一样可以只给自己想要的类重写equals方法。
    2011-02-02
  • javascript 面向对象编程  function是方法(函数)

    javascript 面向对象编程 function是方法(函数)

    在进行编程时,必免不了要碰到复杂的功能。初学者最怕复杂的功能,因为不能够很好的进行功能边界划分,只能一大串if、循环加case堆叠在一起,结果出来的程序自己看着晕,别人看着更晕。
    2009-09-09
  • js 函数调用模式小结

    js 函数调用模式小结

    在javascript中一共有四种调用模式:方法调用模式、函数调用模式、构造器调用模式和apply调用模式。这些模式在如何初始化关键参数this上存在差异
    2011-12-12
  • javascript new一个对象的实质

    javascript new一个对象的实质

    javascript 中,new一个对象的实质是什么?即,当我们构建一个类的实例的时候,真正做了些什么?
    2010-01-01
  • javascript中的对象创建 实例附注释

    javascript中的对象创建 实例附注释

    为了让你的js代码更加的专业与代码的条理性,很多情况下都是定义成对象的方式来书写代码,想深入的朋友可以参考下。
    2011-02-02

最新评论