new Number()
との違いは何ですか? はオブジェクトを作成し、は単なる関数であることはNumber()
わかりますが、どちらをいつ呼び出すべきで、その理由は何ですか?new Number()
Number
Number()
関連して、Mozilla は次のように述べています。
非ブール値をブール値に変換する場合は、Boolean オブジェクトを使用しないでください。代わりに、このタスクを実行する関数として Boolean を使用してください。
x = Boolean(expression); // preferred x = new Boolean(expression); // don't use
それはなぜですか? 結果は同じだと思っていたのですが?
ベストアンサー1
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