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 全部选择 提示:你可先修改部分代码,再按运行]

Object类之equals方法

class Cat {     int color;     int height;     int weight;     public boolean equals(Object obj...
  • Prince140678
  • Prince140678
  • 2016年07月05日 21:56
  • 2414

Java equals方法实现总结[原]

 Java equals方法实现总结作者: Denlee原文链接: http://blog.csdn.net/denlee/archive/2008/10/15/3081722.aspx    所有的...
  • denlee
  • denlee
  • 2008年10月15日 22:05
  • 5334

js中的equals()的用法及getElementById()与getElementsByName()的写法

 1.document.getElementByIddocument.getElementsByName()document.getElementsByTagName()注意上面的Element后在I...
  • zjx2388
  • zjx2388
  • 2008年07月29日 12:31
  • 8151

9. 【对于所有对象都通用的方法】重写equals方法时一定也要重写hashCode方法

本文是《Effective Java》读书笔记第9条:在每个覆盖了equals方法的类中,一定也要覆盖hasCode方法。否则会导致该类无法结合所有基于散列的集合一起正常工作。...
  • get_set
  • get_set
  • 2016年07月11日 23:01
  • 540

Object类学习之equals方法重写

我们知道java中所有的类都有equals方法,因为Object类拥有equals方法 object对象中的 public boolean equals(Object obj),指示其他某个对象...
  • zhangqindabendan
  • zhangqindabendan
  • 2017年01月31日 22:10
  • 973

用作Map的键必须实现equals和hashCode方

用作Map的键必须实现equals和hashCode方法 (2013-05-19 20:22:04)转载▼ 标签: it Map有几种基本实现,包括HashMap,TreeMap,LinkedHas...
  • gufachongyang02
  • gufachongyang02
  • 2014年10月04日 17:31
  • 1107

Java编程:List.remove()、equals() 方法解惑

下午写了一段代码,大致的处理的业务是这样的: 有一个 TreeNode 类型的 List,TreeNode 有一个 nodeId 属性, 如果 nodeId 字符串的第 index 索引位置的字符不...
  • claram
  • claram
  • 2016年11月28日 19:25
  • 852

比较两个对象的内容是否相等 重写object 的equals方法

比较两个对象的内容是否相等 重写object 的equals方法
  • ad_xi
  • ad_xi
  • 2016年06月22日 16:28
  • 3382

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

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

如果要重写一个对象的equals方法,还要考虑什么?

hashCode hashCode是jdk根据对象的地址或者字符串或者数字算出来的int类型的数值 public int hashCode()返回该对象的哈希码值 在 Java ...
  • WO8451401
  • WO8451401
  • 2017年03月21日 08:39
  • 655
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JS 中对象equals方法的实现
举报原因:
原因补充:

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