javascript - Javascript 中 new Boolean() 的用途是什么?

标签 javascript boolean

有什么用:

var flag = new Boolean(false); 

相比于:

var flag = false;

什么时候你会真正使用new Boolean

最佳答案

全局函数Boolean()在没有new的情况下调用时可用于类型转换,例如

var foo = Boolean(bar); // equivalent to `var foo = !!bar`

当使用 new 调用时,将额外创建一个包装器对象,这意味着您可以为该对象分配任意属性:

var foo = new Boolean(bar); // equivalent to `var foo = Object(Boolean(bar));`
foo.baz = 'quux';
alert(foo.baz);

这对于原始值是不可能的,因为原始值不能保存属性:

var foo = true;
foo.baz = 'quux';
alert(foo.baz); // `foo.baz` is `undefined`

由于自动装箱,将属性分配给基元不会产生错误,即

foo.baz = 'quux';

将被解释为

// create and immediately discard a wrapper object:
(new Boolean(foo)).baz = 'quux';

要取回原始值,您必须调用 valueOf() 方法。如果您想实际使用包装值,这是必需的,因为对象在 boolean 上下文中始终评估为 true - 即使包装值是 false

我从来没有遇到过能够将属性分配给 boolean 值的有用应用程序,但装箱在需要引用原始值的情况下可能很有用。

关于javascript - Javascript 中 new Boolean() 的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/856324/

相关文章:

swift - 如何使用 Parse 子类和 User 之间的关系 - Swift

javascript - JavaScript 中 boolean 值与 Int 值的比较

javascript - 从数据属性字符串中获取计算出的比率值

javascript - Jquery 到 Javascript Bootstrap 滚动功能

java - 此方法必须返回 boolean 类型的结果,java

javascript - boolean 连接?这种模式的真正术语是什么?

java - boolean setter 错误输出

javascript - 使 HTML 页面的元素在另一个 HTML 页面中可访问

javascript - Array.includes 的功能使用会导致 TypeError

javascript - Bootstrap4 轮播高度