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 的 trim 函数的代码
Aug 13 Javascript
原生js做的手风琴效果的导航菜单
Nov 08 Javascript
javascript页面渲染速度测试脚本分享
Apr 15 Javascript
JavaScript通过this变量快速找出用户选中radio按钮的方法
Mar 23 Javascript
JavaScript文本框脚本编写的注意事项
Jan 25 Javascript
jQuery on()绑定动态元素出现的问题小结
Feb 19 Javascript
Vue.js递归组件构建树形菜单
Dec 24 Javascript
vue 优化CDN加速的方法示例
Sep 19 Javascript
微信小程序实现人脸识别登陆的示例代码
Apr 02 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
Oct 24 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
Mar 07 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
Apr 09 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
PHP5 安装方法
2006/10/09 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
2016/07/25 PHP
php 解决扫描二维码下载跳转问题
2017/01/13 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
2019/01/15 PHP
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
2012/05/23 Javascript
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
2013/07/17 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
深入理解node exports和module.exports区别
2016/06/01 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
Vue.js表单控件实践
2016/10/27 Javascript
jquery实现多次上传同一张图片
2017/01/09 Javascript
JavaScript数组复制详解
2017/02/02 Javascript
Bootstrap fileinput文件上传预览插件使用详解
2017/05/16 Javascript
JavaScript之class继承_动力节点Java学院整理
2017/07/03 Javascript
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
Vue项目全局配置微信分享思路详解
2018/05/04 Javascript
详解vue中组件参数
2018/07/09 Javascript
在iFrame子页面里实现模态框的方法
2018/08/17 Javascript
python with statement 进行文件操作指南
2014/08/22 Python
python提取内容关键词的方法
2015/03/16 Python
深入浅出学习python装饰器
2017/09/29 Python
使用python实现http及ftp服务进行数据传输的方法
2018/10/26 Python
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
python项目对接钉钉SDK的实现
2019/07/15 Python
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
2012/11/29 HTML / CSS
外语学院毕业生的自我鉴定
2013/11/28 职场文书
幼儿园元旦家长感言
2014/02/27 职场文书
环保专项行动方案
2014/05/12 职场文书
企业文化理念标语
2014/06/10 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
2015年大学学生会工作总结
2015/05/13 职场文书
医院病假条范文
2015/08/17 职场文书
python运算符之与用户交互
2022/04/13 Python