Boolean(expression)
将简单地将表达式转换为布尔原始值,同时new Boolean(expression)
将围绕转换后的布尔值创建一个包装对象。
可以看出不同之处:
// Note I'm using strict-equals
new Boolean("true") === true; // false
Boolean("true") === true; // true
还有这个(感谢@hobbs):
typeof new Boolean("true"); // "object"
typeof Boolean("true"); // "boolean"
注意:虽然包装器对象会在必要时自动转换为原语(反之亦然),但我只能想到一种情况,你想在哪里使用new Boolean
,或者任何其他用于原语的包装器 - 如果你想将属性附加到单个值。例如:
var b = new Boolean(true);
b.relatedMessage = "this should be true initially";
alert(b.relatedMessage); // will work
var b = true;
b.relatedMessage = "this should be true initially";
alert(b.relatedMessage); // undefined