javascript对象比较

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) == true; (pa<=pb) == true; (end)======================================================================== /**JS画图,JS小游戏,JS代码集合, JS地图,JS写RPG游戏,JS动画,JS绘图, js关系操作符,JS对象, JS函数, JS经典 例子,JS面向对象**/ /**javascript画图,javascript小游戏,javascript代码集合, javascript地图,javascript写RPG游戏,javascript动画,javascript绘图, javascript对象, javascript函数, javascript经典例子,javascript面向对象**/ 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sunxing007/archive/2009/04/27/4130029.aspx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值