new Number() と Number() の違い 質問する

new Number() と Number() の違い 質問する

new Number()との違いは何ですか? はオブジェクトを作成し、は単なる関数であることはNumber()わかりますが、どちらをいつ呼び出すべきで、その理由は何ですか?new Number()NumberNumber()

関連して、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

おすすめ記事