1. Boolean对象
1.1. Boolean是对true或false的包装对象。
1.2. 创建Boolean对象的语法:
var myBool = new Boolean(value);
1.3. 参数value由布尔对象存放的值。
1.4. 当Boolean()和运算符new一起作为构造函数使用时, Boolean()将把它的参数转换成一个布尔值, 并且返回一个包含该值的Boolean对象。
1.5. 如果省略value参数, 或者设置为undefined、null、""、0、NaN或false, 则该对象设置为false。否则设置为true(即使value参数是字符串"false")。
2. Boolean对象属性
3. Boolean对象方法
4. 使用字面量创建布尔值和Boolean对象创建布尔值
4.1. 使用字面量创建布尔值和Boolean对象创建布尔值
var b1 = new Boolean(); // Boolean对象创建布尔值
var b2 = false; // 使用字面量创建布尔值
4.2. 使用字面量创建的布尔值和使用Boolean对象创建布尔值的不同
4.2.1. 使用字面量创建的布尔值是原始值, 储存在栈中。
4.2.2. 使用Boolean对象创建的布尔值是对象(引用类型), 储存在堆中。
4.2.3. 布尔字面量和Boolean对象创建布尔值的内存结构:
4.2.4. 使用Boolean对象创建布尔值比使用字面量创建布尔值复杂的多(就是因为Boolean对象多执行了一个Boolean()构造函数), 执行效率低, 因此我们通常使用字面量创建布尔值。
4.2.5. 使用==运算符判断使用字面量和Boolean对象创建的相同值的布尔值是否相等时, 结果是true, 因为布尔值相同。
4.2.6. 使用===运算符判断使用字面量和Boolean对象创建的相同值的布尔值是否相等时, 结果是false, 因为虽然布尔值相同, 但类型不同, 一个是布尔值, 一个是对象。
5. 布尔原始值可以使用Boolean对象的属性和方法
5.1. 原始布尔值, 比如true, 无法拥有属性和方法, 因为它们不是对象。
5.2. 但是通过JavaScript, Boolean对象的属性和方法也可用于原始布尔值, 因为在执行属性和方法时 JavaScript将原始布尔值视为伪对象。
6. Boolean对象重写了Object对象的constructor: ƒ Boolean()属性, 和toString()、valueOf()这两个方法。
7. toString()方法
7.1. toString()方法可把一个逻辑值转换为字符串, 并返回字符串原始值"true"或"false"。
7.2. 语法
booleanObject.toString()
8. valueOf()方法
8.1. valueOf()方法可返回Boolean对象的原始值。
8.2. 语法
booleanObject.valueOf()
9. 例子
9.1. 代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>Boolean对象</title>
</head>
<body>
<script type="text/javascript">
var b1 = new Boolean(undefined);
var b2 = new Boolean(null);
var b3 = new Boolean("");
var b4 = new Boolean("false");
var b5 = new Boolean(0);
var b6 = new Boolean(NaN);
var b7 = new Boolean();
var b8 = new Boolean(false);
var b9 = new Boolean(true);
var b10 = true;
document.write('b1 = ' + b1 + '<br />');
document.write('b2 = ' + b2 + '<br />');
document.write('b3 = ' + b3 + '<br />');
document.write('b4 = ' + b4 + '<br />');
document.write('b5 = ' + b5 + '<br />');
document.write('b6 = ' + b6 + '<br />');
document.write('b7 = ' + b7 + '<br />');
document.write('b8 = ' + b8 + '<br />');
document.write('b9 = ' + b9 + '<br />');
document.write('b10 = ' + b10 + '<hr />');
document.write('(b9 == b10) = ' + (b9 == b10) + '<br />');
document.write('((b9 === b10) = ' + (b9 === b10) + '<br />');
document.write('(b9.valueOf() === b10) = ' + (b9.valueOf() === b10) + '<br />');
document.write('(typeof b9) = ' + (typeof b9) + ', (typeof b9.valueOf()) = ' + (typeof b9.valueOf()) + '<br />');
document.write('(typeof b10) = ' + (typeof b10) + ', (typeof b10.valueOf()) = ' + (typeof b10.valueOf()) + '<hr />');
document.write('b8.toString() = "' + b8.toString() + '", (typeof b8.toString()) = ' + (typeof b8.toString()) + '<br />');
document.write('b9.toString() = "' + b9.toString() + '", (typeof b9.toString()) = ' + (typeof b9.toString()) + '<br />');
document.write('b10.toString() = "' + b10.toString() + '", (typeof b10.toString()) = ' + (typeof b10.toString()) + '<br />');
</script>
</body>
</html>
9.2. 效果图