Boolean類(lèi)型是與布爾值對(duì)應(yīng)的引用類(lèi)型。要?jiǎng)?chuàng)建Boolean對(duì)象,可以像下面這樣調(diào)用Boolean構(gòu)造函數(shù)并傳人true或false值: var booleanObject=new Boolean(true);
Boolean類(lèi)型的實(shí)例重寫(xiě)了valueOf()方法,返回基本類(lèi)型值true或false;重寫(xiě)了toString()方法,返回字符串”true”和”false”??墒?,Boolean對(duì)象在ECMAScript中的用處不大,因?yàn)樗?jīng)常會(huì)造成人們的誤解。其中最常見(jiàn)的問(wèn)題就是在布爾表達(dá)式中使用Boolean對(duì)象,例如:
var falseObj ect=new Boolean( false);
var result= falseObject&&true;
alert (result); //true
var falseValue=false;
result=falseValue&&true;
alert (result); //false
在這個(gè)例子中,我們使用false值創(chuàng)建了一個(gè)Boolean對(duì)象。然后,將這個(gè)對(duì)象與基本類(lèi)型值true構(gòu)成了邏輯與表達(dá)式。在布爾運(yùn)算中,false && true等于false??墒牵纠械倪@行代碼是對(duì)falseObject而不是對(duì)它的值(false)進(jìn)行求值。前面討論,布爾表達(dá)式中的所有有對(duì)象都會(huì)被轉(zhuǎn)換為true,因此falseObject對(duì)象在布爾表達(dá)式中代表的是true.結(jié)果,true && true 當(dāng)然然就等于true了。
基本類(lèi)型與引用類(lèi)型的布爾值還有兩個(gè)區(qū)別。首先,typeof操作符對(duì)基本類(lèi)型返回"boolean",而對(duì)引用類(lèi)型返回”object”。其次,由于Boolean對(duì)象是Boolean類(lèi)型的實(shí)例,所以南昌網(wǎng)站建設(shè)公司技術(shù)員使用instanceof操作符測(cè)試Boolean對(duì)象會(huì)返回true,而測(cè)試基本類(lèi)型的布爾值則返回false。例如:
alert( typeof falseObj ect); //object
alert (typeof falseValue); //boolean
alert( falseObj ect instanceof Boolean)j //true
alert( falseValue instanceof Boolean)j //false
理解基本類(lèi)型的布爾值與Boolean對(duì)象之間的區(qū)別非常重要——當(dāng)然,我們的建議是永遠(yuǎn)不要使用Boolean對(duì)象。
本文主要用于南昌網(wǎng)絡(luò)公司百恒網(wǎng)絡(luò)內(nèi)部技術(shù)人員交流使用,如讀者發(fā)現(xiàn)不正確之處也以與南昌建網(wǎng)站公司百恒網(wǎng)絡(luò)聯(lián)系,相互交流,相互學(xué)習(xí),相互進(jìn)步.