js對象的比較

本文介绍了一种在JavaScript中为Object原型添加自定义equals方法的方法,该方法用于比较两个对象是否相等。通过递归检查对象属性来实现深度比较,并考虑了类型检查和属性数量一致性等因素。

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

转载于:https://my.oschina.net/snandy/blog/12686

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值