新的数字()与数字()
 new Number()和Number()之间有什么区别? 我得到new Number()创build一个Number对象, Number()只是一个函数,但是什么时候该调用哪个?为什么? 
相关说明,Mozilla说:
 Do not use a Boolean object to convert a non-boolean value to a boolean value. Instead, use Boolean as a function to perform this task. x = Boolean(expression); // preferred x = new Boolean(expression); // don't use 
这是为什么? 我以为结果是一样的?
  Boolean(expression)将简单地将expression式转换为布尔原始值 ,而new Boolean(expression)将围绕转换后的布尔值创build一个包装器对象 。 
与此不同的是:
 // 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" 
  注意:虽然在需要的时候wrapper对象会自动转换为primitive(反之亦然),但只有一种情况,我可以想到要在哪里使用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 
 new Number( x ) 
创build一个新的包装对象。 我不认为有这个理由是有道理的。
 Number( x ) 
将传递的参数转换为Number值。 你可以使用这个将一些variables转换为数字types。 然而,这完成了相同的工作:
 +x 
通常:
你不需要这些:
 new Number() new String() new Boolean() 
你可以使用这些来投射:
 Number( value ) String( value ) Boolean( value ) 
但是,对于铸造来说,有更简单的解决scheme:
 +x // cast to Number '' + x // cast to String !!x // cast to Boolean 
总是值得咨询的规范 ; 从第15.7.1节:
当
Number被调用为一个函数而不是一个构造函数时,它执行一个types转换。
 同样,使用Boolean函数(15.6.1): 
当布尔被作为一个函数而不是一个构造函数调用时,它执行一个types转换。
…这意味着你参考第9.2节(“ToBoolean”):
抽象操作ToBoolean根据表11将其参数转换为Booleantypes的值:
Undefined=false
Null=false
Boolean=结果等于input参数(不转换)。
Number=如果参数为+0,-0或NaN,则结果为false; 否则结果是真的。
String=如果参数是空string(长度为零),则结果为false; 否则结果是真的。
Object=true
  new Boolean(value)和Boolean(value) new Boolean(value)之间的区别基本上是前者返回一个对象,但后者返回一个基元。 这很重要 ,因为对象是真实的: 
 var b = new Boolean(false); display(b); // Displays "false" if (b) { display("true"); // This is the path that gets taken, displaying "true" } else { display("false"); // This path does NOT get taken } 
现场的例子 …而你几乎总是想布尔人testing他们的目的。