有什么用:
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/