JS 中对象equals方法的实现

原创 2006年05月28日 21:13:00

上次我们谈到Javascript 中 浅拷贝与深拷贝的实现..
这回我们看看如何实现判断两个对像的内容是否相等。
这里有一个克隆结果原则是针对Java语言的,当然JavaScript也可以胜任。

克隆满足的条件
clone()方法将对象复制了一份并返还给调用者。所谓“复制”的含义与clone()方法是怎么实现的有关。一般而言,clone()方法满足以下的描述:

第一、对任何的对象x,都有:x.clone() != x;换言之,克隆对象与原对象不是同一个对象。

第二、对任何的对象x,都有:x.clone().getClass == x.getClass(),换言之,克隆对象与原对象的类型一样;在Javascript getClass 就相当于constructor。

第三、如果对象x的equals()方法是定义恰当的话,那么 x.clone().equals(x)也应当是成立的。

在Java语言的API中,凡是提供了clone()方法的类,都满足上面的这些这些条件。Java语言的设计师在设计自己的clone()方法是,也应当遵守这三个条件。
第三条为可选,不必强制实现的,意思是说只要编制得当,也可以实现。
我们还拿上次的例子看一下:
运行代码框

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

其它对像的equals 方法的样例:
后面一个,我重定义了 Boolean 构造函数,并实现了它的toStirng()方法。
可以瞅瞅。
运行代码框

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

相关文章推荐

Java中对于所有对象都通用的方法之——equals

Object:所有类的超类Object类是Java中所有类的超类,在Java中每个类都是由它扩展来的。尽管Object是一个具体的类,但是设计它主要是为了扩展。它所有的非final方法(equals、...

Java对象的equals方法分析与重写

Java中,对于对象的比较,如果用“==”比较的是对象的引用,'=='运算符比较两个对象的地址;   equals才是比较的对象的内容,且Object类的equals方法的默认实现也是按照内存地址比较...
  • lindiwo
  • lindiwo
  • 2015年07月26日 14:46
  • 595

22-JAVA面向对象-重写toString()与equals()方法

public class a { int b = 123; //基类是Object. 可以查看api.Object里的几个方法.这里是重写toString() //可以通过自定义的方式显示实例的...

运用“==”运算符与equals()方法对对象进行比较

==运算符用于表示两个变量的值是否相等 equals()用于比较两个对象中的内容是否一样 代码如下 class test { public static void main(String...

第03章 面向对象 36 Object类之equals方法

鱼欲遇雨:每日都学习一点,持之以恒,天道酬勤!不能用电脑时,提前补上!(2012.9.6)   一  equals方法   Object类中方法定义有:                 1:...

java中hashMap使用一个对象作为key时,对key进行唯一性表达重写equals()方法

HashMappackage itcast02;public class Student { //学生姓名 private String name; //学生年龄 pr...
  • euller
  • euller
  • 2017年04月17日 17:53
  • 717

java中创建String类型对象的两种方式以及在使用equals()和“==”两种方法时的区别

string 对象创建的两种方式 String aString="a"; String bString = new String("a"); 其中aString是通过直接赋值的方式创建,bStr...

对于所有对象都通用的方法 - 覆盖equals时总要覆盖hashCode

知识点: 1.hashCode的规范 2.为什么要覆盖hashCode 3.hashCode的写法 4.Java类库中的hashCode方法 1.hashCode的规范 a.应用程序执行的时候,...

Java中两个对象的比较 equals()方法和==号的区别

在Java中,时不时我们会把两个对象进行,然而得到的结果却不是我们想的结果,这是怎么回事呢? 一、两种形式的比较:比较时,我们要弄清楚是哪一种比较。       1.值类型比较       即内容...

Effective Java - 对于所有对象都通用的方法 - 覆盖 equals 时请总要覆盖 hashCode

读书笔记 仅供参考Object.hashCode 通用约定如果在覆盖了 equals 方法的类中没有覆盖 hashCode 方法,就会违法 Object.hashCode 的通用约定,导致所有基于 h...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JS 中对象equals方法的实现
举报原因:
原因补充:

(最多只允许输入30个字)