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實(shí)現(xiàn)導(dǎo)航欄分頁(yè)效果
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)導(dǎo)航欄分頁(yè)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06
JavaScript實(shí)現(xiàn)選擇框按比例拖拉縮放的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)選擇框按比例拖拉縮放的方法,具有等比例縮放及設(shè)置最小范圍等功能,涉及javascript事件的添加、監(jiān)聽、頁(yè)面元素動(dòng)態(tài)操作及鼠標(biāo)事件的響應(yīng)等技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
點(diǎn)擊按鈕彈出模態(tài)框的一系列操作代碼實(shí)例
這篇文章主要介紹了js彈出模態(tài)框方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
JS異步編程之generator與async/await語(yǔ)法糖詳解
這篇文章主要為大家詳細(xì)介紹了JS異步編程中g(shù)enerator與async/await語(yǔ)法糖的使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下2022-11-11
javascript 操作Word和Excel的實(shí)現(xiàn)代碼
javascript 操作Word和Excel的實(shí)現(xiàn)代碼, 需要的朋友可以參考下。2009-10-10

