javascript对象比较
来源:互联网 发布:tensorflow 语义理解 编辑:程序博客网 时间:2024/05/21 13:57
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;
(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面向对象**/
- javascript对象比较
- javascript对象比较
- JavaScript对象遍历与比较
- JavaScript的对象值比较
- JavaScript趣题:深度比较对象
- javascript 对象比较(hashcode)
- Ruby和JavaScript对象模型的比较
- JavaScript比较两个对象是否相等
- Javascript对象定义方式的比较
- HTML DOM对象与JavaScript对象之比较
- javascript window 对象 (转,比较全,懒得自己整理了)
- javascript之获取对象几种方式比较
- JavaScript-01----包装对象、比较、隐式转化、类型检测
- JavaScript中Date对象之日期大小比较(三)
- JavaScript和ES6中字符串、数组对象的比较
- JavaScript创建对象的几种模式比较
- Javascript比较
- JavaScript--比较
- 理解 Flex itemRenderer - 第 3 部分: 通信
- asp.net2008(C#)的TreeView1添加树型目录节点
- c++学习笔记--虚函数和多态的重新认识
- 理解 Flex itemRenderer - 第 4 部分: 状态和过渡
- 心酸的感觉
- javascript对象比较
- J2SE J2EE J2ME的区别
- 理解 Flex itemRenderer - 第 5 部分: 效率
- Oracle OCP 提升职场竞争力
- 迷茫了,不知学什么好了
- 思科UCS ,刀片服务器?不,云计算
- arm 异常处理
- 甲骨文收购大戏的背后
- Huihoo ACE/TAO