Boolean
是内置的构造函数,用于创建布尔值。
<script>
// 使用构造函数创建布尔类型
let locked = new Boolean('10');
// 字面量创建布尔类型
let flag = true;
// 检测是否属于同一个构造函数
console.log(locked.constructor === flag.constructor);
</script>
总结:
- 推荐使用字面量方式声明布尔值,而不是
Boolean
构造函数
注:Boolean 也可以当做普通函数使用,这时它的作用是强制转换成布尔类型数据,由其它数据类型转换成布尔类型的数据被称为真值(truly)或假值(falsly)。
哪些内容在转成布尔时是false?
0
0.0
''
null
NaN not a number 非数字
undefined
false
除此之外,其他所有值在转成布尔的时候 ,都是true
[] ===> true
{} ===> true
' ' ===> true
写在最后
至此对 JavaScript 有了更深的理解,即 JavaScript 中一切皆为对象,还有以前学习的 window、Math 对象,最后补充一点无论是引用类型或是包装包类型都包含两个公共的方法 toString
和 valueOf
当把调用者,当做字符串使用的时候,会自动调用 toString() ;如果没有toString则调用valueOf
当把调用者,当做数字使用的时候,会自动调用valueOf();如果没有valueOf则调用toString。
这两个方法可以自己定义(如果自己定义了这两个方法,则优先使用我们自己定义的)。
<script>
function abc() {
}
// 手动修改函数的 toString()
abc.toString = function () {
return 12345
}
// 把函数当做字符串使用,会自动调用函数的toString()
console.log(String(abc)) // 把函数转成字符串使用
console.log(abc + '') // 把函数转成字符串使用(一个变量和字符串拼接的时候,都会把这个变量先转成字符串)
alert(abc) // alert方法会自动把变量的值转成字符串
// ----------------- 面试题 -----------------
// 自己创建一个函数,对传入的参数进行求和;函数的调用形式如下:
// fn(1, 2, 3) // 6
// fn(1)(2, 3) // 6
// fn(1, 2)(3) // 6
// fn(1)(2)(3) // 6
// fn(1, 2)(3)(4)(5, 6)(7) // 28
// 柯里化
</script>
总结:
valueOf
方法获取原始值,数据内部运算的基础,很少主动调用该方法toString
方法以字符串形式表示对象