`
zhouyrt
  • 浏览: 1158957 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

js對象的比較

阅读更多

項目中需要比較兩個對象是否相等,給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;
		};
 

  firefox示例如下:

  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
 
5
0
分享到:
评论

相关推荐

    javascript对象比较

    - "源码"表示`equals.js`是一个可读、可理解的代码实现,可以作为学习JavaScript对象比较的实例。 总结来说,JavaScript中的对象比较涉及到值和引用的概念,以及浅层和深层比较的区别。`equals.js`文件可能是实现...

    js 面向对象实例

    每个JavaScript对象都有一个`__proto__`属性,指向创建该对象的构造函数的原型。原型对象也是一个对象,可以通过`prototype`属性来访问。我们可以在原型上定义方法,这样所有实例都可以访问这些方法: ```...

    deePool高效的JavaScript对象池

    DeePool通过实现JavaScript对象池,为开发者提供了一种优化内存使用、提高程序运行效率的有效手段。尤其在需要大量创建和销毁对象的场景下,使用DeePool可以显著提升性能,减少内存压力。掌握并合理运用DeePool,...

    sameness.js:Sameness.js是一个纯JavaScript对象比较库。 它具有检查两个对象是否是相同对象,相同对象,等效对象或超集与子集对象的能力

    Sameness.js是一个纯JavaScript对象比较库。 它具有检查对象a和b是否为的功能: 相同的对象( ) 相同的对象( ) 等效对象( ) b的子集a ( ) Sameness.js通过Sameness变量公开。 是同样的 检查a和b对象...

    json比对js插件

    2. **对比功能**:核心功能是对两个JSON对象进行深度比较,不仅检查键值是否相同,还会检查嵌套的对象和数组是否存在差异。 3. **高亮显示**:当发现不同之处时,工具会以醒目的方式(如颜色高亮)突出显示这些差异...

    JavaScript内置对象相关介绍及用法

    JavaScript内置对象相关介绍及用法ppt JavaScript内置对象相关介绍及用法

    js对象属性排序

    本篇文章将深入探讨JavaScript对象属性排序的原理、方法以及注意事项。 首先,了解JavaScript对象的基本特性是至关重要的。在ECMAScript规范中,对象的属性访问速度并不依赖于属性的位置或顺序,因为它们内部是通过...

    JS面向对象经典案例

    JS 面向对象经典案例 在JavaScript中,面向对象编程是非常重要的一部分。它提供了一种创建和组织代码的方式,能够让开发者更好地组织和维护代码。在本文中,我们将介绍JavaScript面向对象编程中的经典案例,包括...

    JS中Json对象

    // 将JavaScript对象转换为JSON字符串 var jsonString = JSON.stringify(person); console.log(jsonString); // 将JSON字符串转换回JavaScript对象 var parsedPerson = JSON.parse(jsonString); console.log...

    有关js对象的操作和遍历对象小练习带注释.html

    有关js对象的操作和遍历对象小练习带注释.html

    js获取对象,数组所有属性键值(key)和对应值(value)的方法示例

    此外,还有在线JS常见遍历方式性能分析比较工具(如http://tools.jb51.net/aideddesign/js_bianli),可以用来比较不同遍历方法的性能。 总结: 本文通过示例介绍了如何在JavaScript中获取对象和数组的属性键值以及...

    js数组数据和对象数据做比较,并改变数组的值

    js数组数据和对象数据做比较,并改变数组的值

    JS 对象实例讲解和应用

    JavaScript(简称JS)是Web开发中的重要脚本语言,尤其在客户端编程中不可或缺。本文将深入探讨JS对象的实例创建、属性与方法、原型链、继承机制以及在实际应用中的常见场景。 一、JS对象实例的创建 1. 构造函数...

    JavaScript之Date对象(源代码)

    JavaScript之Date对象(源代码)JavaScript之Date对象(源代码)JavaScript之Date对象(源代码)JavaScript之Date对象(源代码)JavaScript之Date对象(源代码)JavaScript之Date对象(源代码)JavaScript之Date对象...

    JavaScript之Math对象(源代码)

    JavaScript之Math对象(源代码)JavaScript之Math对象(源代码)JavaScript之Math对象(源代码)JavaScript之Math对象(源代码)JavaScript之Math对象(源代码)JavaScript之Math对象(源代码)JavaScript之Math对象...

    document 对象.html-javascript中DOM对象内容

    document 对象.html-javascript中DOM对象内容

    javaScript对象大全

    javaScript对象大全-javaScript必备手册-JS资料-JS教程.doc

    原生JS原型对象练习

    在JavaScript的世界里,原型对象(Prototype)是理解对象继承机制的关键。这个练习旨在帮助学习者深入理解原型链的概念,这是JavaScript实现面向对象编程的核心部分。原生JS,即不依赖于像jQuery这样的库,让我们...

Global site tag (gtag.js) - Google Analytics