javascript 对象比较实现代码
javascript 对象比较实现代码
发布时间:2016-12-30 来源:查字典编辑
摘要:javascript对象比较比较符:==,!=,===,!==,>=,,=,,pb)==false;(pa=pb)==true;(pa

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教程学习
编程开发子分类