有什么用:
var flag = new Boolean(false);
相比:
var flag = false;
你什么时候真正使用new Boolean
?
全局函数Boolean()
可以在没有调用时用于类型转换new
, eg
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()
方法。如果您想实际使用包装的值,则需要这样做,因为对象总是评估为true
在布尔上下文中 - 即使包装的值是false
.
我从未遇到过能够将属性分配给布尔值的有用应用程序,但装箱在需要引用原始值的情况下可能很有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)