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
javascript对象比较
最新推荐文章于 2022-12-08 15:20:03 发布