Javascript如何判断对象是否相等

简介:

在做表单页面的时候,想判断2个js对象,是不是所有完全相同。

这里是stackoverflow上的解决办法,在这里记录一下。

原文地址: http://stackoverflow.com/questions/1068834/object-comparison-in-javascript

复制代码
Object.prototype.equals = function(x)
{
  var p;
  for(p in this) {
      if(typeof(x[p])=='undefined') {return false;}
  }

  for(p in this) {
      if (this[p]) {
          switch(typeof(this[p])) {
              case 'object':
                  if (!this[p].equals(x[p])) { return false; } break;
              case 'function':
                  if (typeof(x[p])=='undefined' ||
                      (p != 'equals' && this[p].toString() != x[p].toString()))
                      return false;
                  break;
              default:
                  if (this[p] != x[p]) { return false; }
          }
      } else {
          if (x[p])
              return false;
      }
  }

  for(p in x) {
      if(typeof(this[p])=='undefined') {return false;}
  }

  return true;
}
复制代码

 


本文转自JustRun博客园博客,原文链接:http://www.cnblogs.com/JustRun1983/archive/2013/03/18/2965481.html,如需转载请自行联系原作者


目录
相关文章
|
10天前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可以是任意类型且有序,与对象的字符串或符号键不同;Set存储唯一值,无重复。两者皆可迭代,支持for...of循环。Map有get、set、has、delete等方法,Set有add、delete、has方法。示例展示了Map和Set的基本操作。
19 3
|
13天前
|
JavaScript 前端开发 开发者
JavaScript的`Math`对象
【4月更文挑战第21天】JavaScript的`Math`对象
18 3
|
5天前
|
前端开发 JavaScript 数据安全/隐私保护
前端javascript的DOM对象操作技巧,全场景解析(二)
前端javascript的DOM对象操作技巧,全场景解析(二)
|
5天前
|
移动开发 缓存 JavaScript
前端javascript的DOM对象操作技巧,全场景解析(一)
前端javascript的DOM对象操作技巧,全场景解析(一)
|
5天前
|
缓存 编解码 自然语言处理
前端javascript的BOM对象知识精讲
前端javascript的BOM对象知识精讲
|
5天前
|
JavaScript 前端开发
JavaScript 日期对象
JavaScript 日期对象
|
5天前
|
存储 JavaScript 前端开发
JavaScript对象
JavaScript对象
|
5天前
|
JavaScript 前端开发
JavaScript的math对象
JavaScript的math对象
|
5天前
|
JavaScript 前端开发
JavaScript DOM 文档对象模型(获取、改变html元素)
JavaScript DOM 文档对象模型(获取、改变html元素)
|
5天前
|
JavaScript 前端开发
【专栏】Javascript 对象的深浅拷贝
【4月更文挑战第29天】JavaScript中的对象拷贝分为浅拷贝和深拷贝。浅拷贝仅复制对象引用,修改拷贝会影响原始对象,如使用直接赋值、`Object.assign()`、扩展运算符和`Array.prototype.concat()`。深拷贝则创建独立副本,修改不影响原始对象,可通过递归、`JSON.stringify()`和`JSON.parse()`、Lodash的`cloneDeep()`或jQuery的`jQuery.extend()`实现。