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