javascript 对象比较实现代码


Posted in Javascript onApril 27, 2009

javascript对象比较
比较符:==,!=,===,!==,>=,<=,>,<
==总是试图比较他们的直,如果类型不一样,总是试图作转化。
===比较同一性,不作转化就比较

== 如果是基本类型(string, number, boolean),比较他们的值,
var a = "123";
var b = 123;
则(a==b) = true;
(a===b) = false;
如果是object, array, function类型,比较他们的reference.只有当他们的reference相等才为true.
function Point(x,y){
  this.x = x;
  this.y = y;
};

Point.prototype.toString = function(){
  alert("in toString");
  return "x=" + this.x + " y=" + this.y;
};

Point.prototype.valueOf = function(){
  alert("in valueOf");
  return this.x+this.y;
};
var pa = new Point(1,1);
var pb = new Point(1,1);
var pc = pa;
则:pa!=pb;
    pa!==pb;
    pa==pc;
    pa===pc;

var arr1 = [1,2,3];
var arr2 = [1,2,3];
arr1!=arr2, arr1!==arr2

不得不说一下0, false, null, undefined
var t1 = 0;
var t2 = false;
var t3 = null;
var t4;
则:t1==t2;t1!==t2;
t1!=t3; t1!==t3;
t1!=t4; t1!==t4;
t2!=t3; t2!==t3;
t2!=t4; t2!==t4;
t3==t4; t3!==t4;

如果一个object和一个基本类型比较,则先调用对象的valueOf,再调用对象的toString与基本类型进行比较
如果是与boolean比较,先把true转为1,false转为0再比较。

var pa = new Point(1,1);
alert(pa==2);会输出"in valueOf",再输出"true";
如果屏蔽掉Point.prototype.valueOf则输出"in toString",再输出"false";
var pa = new Point(1,0);
则pa==true;
关系操作符>=,<=,>,<
如果两边都是数字,或者可以转化为数字,则比较数字。
如果两边都是string,或者可以转化为string,则比较string。
如果一边可转为string,一边可转为number,则再试图把string转为number再比较,如果string不能转为number, 则为NaN,返回false.
如果有object参与比较,则总是试图转object为number或string再比较。
下面有一个有趣的例子:
function Point(x,y){
  this.x = x;
  this.y = y;
};

 

Point.prototype.toString = function(){
  alert("in toString");
  return "x=" + this.x + " y=" + this.y;
};

Point.prototype.valueOf = function(){
  alert("in valueOf");
  return this.x+this.y;
};
var pa = new Point(1,1);
var pb = new Point(1,1);
(pa==pb)==false;
(pa>pb)==false;
(pa<pb)==false;
但是:
(pa>=pb) == true;
(pa<=pb) == true;

Javascript 相关文章推荐
javascript prototype,executing,context,closure
Dec 24 Javascript
JAVASCRIPT函数作用域和提前声明 分享
Aug 22 Javascript
HTML页面滚动时获取离页面顶部的距离2种实现方法
Sep 05 Javascript
Javascript学习笔记之数组的构造函数
Nov 23 Javascript
jQuery对象初始化的传参方式
Feb 26 Javascript
jquery使用animate方法实现控制元素移动
Mar 27 Javascript
获取阴历(农历)和当前日期的js代码
Feb 15 Javascript
快速掌握Node.js模块封装及使用
Mar 21 Javascript
详解jquery插件jquery.viewport.js学习使用方法
Sep 08 jQuery
简单的三步vuex入门
May 20 Javascript
vue 插件的方法代码详解
Jun 06 Javascript
详解阿里Node.js技术文档之process模块学习指南
Jan 04 Javascript
JQUERY 对象与DOM对象之两者相互间的转换
Apr 27 #Javascript
一个选择最快的服务器转向代码
Apr 27 #Javascript
在IE上直接编辑网页内容的js代码(IE地址栏js)
Apr 27 #Javascript
细品javascript 寻址,闭包,对象模型和相关问题
Apr 27 #Javascript
基于jQuery图片平滑连续滚动插件
Apr 27 #Javascript
js 发个判断字符串是否为符合标准的函数
Apr 27 #Javascript
jQuery 对象中的类数组操作
Apr 27 #Javascript
You might like
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
2019/02/25 PHP
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
jQuery 复合选择器应用的几个例子
2014/09/11 Javascript
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
获取input标签的所有属性的方法
2016/06/28 Javascript
微信小程序 获取微信OpenId详解及实例代码
2016/10/31 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
jquery 判断是否支持Placeholder属性的方法
2017/02/07 Javascript
js的函数的按值传递参数(实例讲解)
2017/11/16 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
VueRouter导航守卫用法详解
2017/12/25 Javascript
redux-saga 初识和使用
2018/03/10 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
[02:41]2015国际邀请赛中国区预选赛观战指南
2015/05/20 DOTA
Python的Django框架中TEMPLATES项的设置教程
2015/05/29 Python
Djang中静态文件配置方法
2015/07/30 Python
Python通过属性手段实现只允许调用一次的示例讲解
2018/04/21 Python
Python查找第n个子串的技巧分享
2018/06/27 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
2019/08/13 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
Python3标准库之dbm UNIX键-值数据库问题
2020/03/24 Python
重构Python代码的六个实例
2020/11/25 Python
css3选择器基本介绍
2014/12/15 HTML / CSS
移动端Web页面的CSS3 flex布局快速上手指南
2016/05/31 HTML / CSS
Ryderwear美国官网:澳大利亚高端健身训练装备品牌
2018/04/24 全球购物
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
小学运动会表扬稿
2014/01/19 职场文书
大三学生学年自我鉴定
2014/09/12 职场文书
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
党员批评与自我批评总结
2014/10/15 职场文书