javascript 對(duì)象比較實(shí)現(xiàn)代碼
javascript對(duì)象比較
比較符:==,!=,===,!==,>=,<=,>,<
==總是試圖比較他們的直,如果類型不一樣,總是試圖作轉(zhuǎn)化。
===比較同一性,不作轉(zhuǎn)化就比較
== 如果是基本類型(string, number, boolean),比較他們的值,
var a = "123";
var b = 123;
則(a==b) = true;
(a===b) = false;
如果是object, array, function類型,比較他們的reference.只有當(dāng)他們的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;
如果一個(gè)object和一個(gè)基本類型比較,則先調(diào)用對(duì)象的valueOf,再調(diào)用對(duì)象的toString與基本類型進(jìn)行比較
如果是與boolean比較,先把true轉(zhuǎn)為1,false轉(zhuǎn)為0再比較。
var pa = new Point(1,1);
alert(pa==2);會(huì)輸出"in valueOf",再輸出"true";
如果屏蔽掉Point.prototype.valueOf則輸出"in toString",再輸出"false";
var pa = new Point(1,0);
則pa==true;
關(guān)系操作符>=,<=,>,<
如果兩邊都是數(shù)字,或者可以轉(zhuǎn)化為數(shù)字,則比較數(shù)字。
如果兩邊都是string,或者可以轉(zhuǎn)化為string,則比較string。
如果一邊可轉(zhuǎn)為string,一邊可轉(zhuǎn)為number,則再試圖把string轉(zhuǎn)為number再比較,如果string不能轉(zhuǎn)為number, 則為NaN,返回false.
如果有object參與比較,則總是試圖轉(zhuǎn)object為number或string再比較。
下面有一個(gè)有趣的例子:
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;
相關(guān)文章
JavaScript字符串截取方法總結(jié)(slice、substring、substr等)
在開發(fā)中常常會(huì)需要截取字符串,而 JavaScript 提供了很多種方法實(shí)現(xiàn)截取操作,本文對(duì)各種方法做個(gè)整理,文中通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01解決BootStrap Fileinput手機(jī)圖片上傳顯示旋轉(zhuǎn)問題
這篇文章主要介紹了 BootStrap Fileinput手機(jī)圖片上傳顯示旋轉(zhuǎn)問題,需要的朋友可以參考下2017-06-06在百度知道團(tuán)隊(duì)中快速審批新成員的js腳本
每天都有大量網(wǎng)友申請(qǐng)加入我的團(tuán)隊(duì),于是審核團(tuán)隊(duì)新成員成了一個(gè)費(fèi)力氣的活兒,在此情況下,我寫了個(gè)腳本,自動(dòng)計(jì)算他們的回答采納率,采納率低于20%的自動(dòng)打勾 選中,等級(jí)太低的人也自動(dòng)打勾選中2014-02-02微信小程序開發(fā)之實(shí)現(xiàn)選項(xiàng)卡(窗口頂部TabBar)頁面切換
本篇文章主要介紹了微信小程序開發(fā)之選項(xiàng)卡(窗口頂部TabBar)頁面切換,具有一定的參考價(jià)值,有需要的可以了解一下。2016-11-11Javascript結(jié)合css實(shí)現(xiàn)網(wǎng)頁換膚功能
現(xiàn)在網(wǎng)站換皮膚是比較常見的功能,大多數(shù)論壇都有的,要想實(shí)現(xiàn)這樣效果可以看如下代碼.2009-11-11JavaScript使用pop方法移除數(shù)組最后一個(gè)元素用法實(shí)例
這篇文章主要介紹了JavaScript使用pop方法移除數(shù)組最后一個(gè)元素,實(shí)例分析了javascript中pop方法的使用技巧,需要的朋友可以參考下2015-04-04js實(shí)現(xiàn)適用于素材網(wǎng)站的黑色多級(jí)菜單導(dǎo)航條效果
這篇文章主要介紹了js實(shí)現(xiàn)適用于素材網(wǎng)站的黑色多級(jí)菜單導(dǎo)航條效果,涉及javascript鼠標(biāo)事件及頁面元素樣式的動(dòng)態(tài)切換技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08