new Number()和之间有什么区别Number()?我得到的是new Number()创建一个Number对象,Number()它只是一个函数,但是我什么时候应该调用它,为什么呢?
new Number()
Number()
Number
在相关说明中,Mozilla说:
不要使用布尔对象将非布尔值转换为布尔值。而是使用Boolean作为执行此任务的函数。 x = Boolean(expression); // preferred x = new Boolean(expression); // don't use
不要使用布尔对象将非布尔值转换为布尔值。而是使用Boolean作为执行此任务的函数。
x = Boolean(expression); // preferred x = new Boolean(expression); // don't use
这是为什么?我以为结果是一样的?
Boolean(expression)将简单地将表达式转换为 boolean原始值 ,而new Boolean(expression)将围绕转换后的boolean值创建 包装对象 。
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,或者其他任何针对基本体的包装器-如果您想将属性附加到单个值。例如:
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