new Boolean在Javascript中的有什么用?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

以下方面有何用处:

var flag = new Boolean(false); 

相对于:

var flag = false;

你什么时候才会用new Boolean?

提问于
用户回答回答于

因为Boolean对象(通常是对象)总是真的,所以使用它们被认为是不好的做法。在JS编程的很多年里,我从来没有使用过它,我也不记得Boolean在其他人的代码中看到过s。一次也没有。

使用原始值可以避免混淆,并且会缩短代码长度。

如果你需要一个包裹在一个对象中的布尔,那么你可以Object像这样使用一个对象:

foo = { value: false };

另外,将Boolean()构造函数作为函数调用(与in一样foo = Boolean(bar))与使用显式类型转换具有相同的效果!!,而后者通常优于前者。

用户回答回答于

全局函数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';

扫码关注云+社区