1. ホーム
  2. ジャバスクリプト

[解決済み】new Object()`とオブジェクトリテラル記法の違いは何ですか?

2022-04-07 04:35:30

質問

このコンストラクターによるオブジェクト生成の構文の違いは何ですか。

person = new Object()

...そして、このリテラル構文。

person = {
    property1 : "Hello"
};

どちらも同じことをするように見えますが、JSLintはオブジェクトリテラル表記を使うことを好んでいます。

どちらが良いのでしょうか?

解決方法は?

どちらも同じことをするのですが(誰かが何か特別なことをしない限り)、2番目のものはオブジェクトを作成します。 はそれにプロパティを追加します。しかし、リテラル記法はソースコードに占めるスペースが少ない。 何が起こっているのかが明確に認識できるので、以下のように使用します。 new Object() ということは、単に入力が増えただけで、(理論的には、JavaScriptエンジンが最適化しなければ)不必要な関数呼び出しを行っていることになります。

これら

person = new Object() /*You should put a semicolon here too.  
It's not required, but it is good practice.*/ 
-or-

person = {
    property1 : "Hello"
};

は技術的に同じことをするわけではありません。 最初のものは単にオブジェクトを作成するだけです。 もうひとつはオブジェクトを作成し、プロパティを設定するものです。 最初のステップを同じにするには、2番目のステップでプロパティを作成し割り当てる必要があります。

何か変わったこと"誰かができることは、シャドウまたはデフォルトの Object のグローバル化です。

// Don't do this
Object = 23;

その中で 極めて異例 の場合 new Object は失敗しますが {} は動作します。

実際のところ、このような理由で new Object よりも {} (そのような非常に珍しいことをしていない限り)。