全面認(rèn)識(shí)JavaScript的Boolean對(duì)象
Boolean對(duì)象是一個(gè)布爾值的對(duì)象包裝器渔嚷。
語法:
new Boolean([value]);
// 參數(shù)
value // 可選蝎土,用來初始化Boolean對(duì)象
如果第一個(gè)參數(shù)不是布爾值慨代,則會(huì)將其轉(zhuǎn)換為布爾值息罗。
- 如果省略該參數(shù)疚鲤,或者其值為
0/-1/null/false/NaN/undefined/''
則生成Boolean對(duì)象的值為false锥累。 - 如果傳入的參數(shù)是DOM對(duì)象
document.all
,也會(huì)生成值為false的Boolean對(duì)象集歇。 - 如果傳入其他的值桶略,包括值為'false'的字符串和任何對(duì)象,都會(huì)創(chuàng)建一個(gè)值為true的Boolean對(duì)象诲宇。
當(dāng)Boolean對(duì)象用于條件語句的時(shí)候际歼,任何不是undefined和null的對(duì)象,包括值為false的Boolean對(duì)象姑蓝,都會(huì)被當(dāng)做true來對(duì)待鹅心。
示例:下面的if語句條件為真:
let x = new Boolean(false);
if(x) {
// 這里的代碼會(huì)被執(zhí)行
}
不要使用創(chuàng)建Boolean對(duì)象的方式將一個(gè)非布爾值轉(zhuǎn)化為布爾值,直接將Boolean當(dāng)做轉(zhuǎn)換函數(shù)來使用即可
let x = Boolean(expression); // 推薦纺荧,x是一個(gè)基本數(shù)據(jù)類型
let x = Boolean(expression); // 不推薦旭愧,x是一個(gè)Boolean對(duì)象
注:不要在應(yīng)該使用基本類型布爾值的地方使用Boolean對(duì)象。
========== 屬性 ==========
Boolean.length length屬性宙暇,值為1输枯。
Boolean.prototype構(gòu)造函數(shù)的原型對(duì)象。
========== 方法 ==========
Boolean對(duì)象自身沒有任何方法占贫,不過它從自己的原型鏈上繼承了一些方法桃熄。
========== 實(shí)例屬性 ==========
Boolean.prototype.constructor 返回創(chuàng)建了實(shí)例原型的函數(shù)。默認(rèn)為Boolean函數(shù)
========== 實(shí)例方法 ==========
1.Boolean.prototype.toString()返回指定的布爾對(duì)象的字符串形式靶剑。
語法:
bool.toString();
// 返回值:表示特定Boolean對(duì)象的字符串
Boolean對(duì)象覆蓋了Object對(duì)象的toString方法蜻拨。并沒有繼承Object.prototype.toString()池充。對(duì)于布爾對(duì)象桩引,toString方法返回該對(duì)象的字符串形式。
當(dāng)一個(gè)Boolean對(duì)象作為文本值或進(jìn)行字符串連接時(shí)收夸,JavaScript會(huì)自動(dòng)調(diào)用其toString方法坑匠。
let flag = new Boolean(true);
let myVar = flag.toString();
console.log(myVar); // true
console.log(flag+' hah'); // true hah
console.log(true + ' hah'); // true hah
2.Boolean.prototype.valueOf()返回一個(gè)Boolean對(duì)象的原始值。
Boolean的valueOf方法返回一個(gè)Boolean對(duì)象或Boolean字面量的原始值作為布爾數(shù)據(jù)類型卧惜。
let x = new Boolean();
let flag = x.valueOf();
if(x) {
console.log('I am x');
}
if(flag) {
console.log('I am flag');
}
// 上面代碼在控制臺(tái)只輸出:I am x
參考文檔:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Boolean