(注1:如果有问题欢迎留言探讨,一起学习!转载请注明出处,喜欢可以点个赞哦!)
(注2:更多内容请查看我的目录。)
1. 简介
为了便于操作基本类型值,ECMAScript提供了3个特殊的引用类型作为基本包装类型:String,Number和Boolean。实际上,每当读取一个基本类型值得时候,后台就会创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操作这些数据。
2. Boolean类型对象创建
Boolean类型是与布尔值对应的引用类型,Boolean类型对象创建是使用Boolean构造函数。下面是使用Boolean构造函数传入不同类型参数后的情况。
// 传入Number类型非0
console.log(new Boolean(1)); // Boolean {true}
// 传入Number类型0
console.log(new Boolean(0)); // Boolean {false}
// 传入NaN类型
console.log(new Boolean(NaN)); // Boolean {false}
// 传入Infinity类型
console.log(new Boolean(Infinity)); // Boolean {true}
// 传入String类型
console.log(new Boolean('123')); // Boolean {true}
// 传入Undefined类型
console.log(new Boolean(undefined)); // Boolean {false}
// 传入Null类型
console.log(new Boolean(null)); // Boolean {false}
// 传入Boolean类型
console.log(new Boolean(true)); // String {"true"}
// 传入Array类型
console.log(new Boolean([1,2])); // Boolean {true}
// 传入Function类型
console.log(new Boolean(function(){return 1;})); // Boolean {true}
// 传入Object类型
console.log(new Boolean({a: 1})); // Boolean {true}
省略new的效果一样。
3. Boolean类型与基本类型值的区别
- typeof操作符返回值不同
typeof(new Boolean(false)); // "object"
typeof(false); // "boolean"
- instanceOf操作符测试Boolean返回值不同
new Boolean(false) instanceof Boolean; // true
false instanceof Boolean; // false
需要注意的是:
new Boolean(false)是一个对象而不是false
new Boolean(false) || false; // Boolean {false}
new Boolean(false) && true; // true
4. Boolean原型对象的方法
Boolean用处不大,实际使用中尽量不要使用。其重写了Object.prototype的两个方法。
Boolean.prototype.valueOf()
返回基本类型true或false
Boolean.prototype.toString()
返回字符串"true"或"false"
参考
MDN-Boolean
BOOK-《JavaScript高级程序设计(第3版)》第5章