5

重複の可能性:
{}またはnew Object()を使用してJavaScriptで空のオブジェクトを作成しますか?

新しい配列を宣言するときは、この表記を使用します

var arr = new Array();

しかし、たとえばjsbinでオンラインでテストすると、「配列リテラル表記[]を使用してください」という警告が表示されます。

コンストラクターの使用を避ける理由が見つかりませんでした。使用するよりも何らかの方法で効率が低下し[]ますか?それとも悪い習慣ですか?

var arr = [];代わりに使用する正当な理由はありvar arr = new Array();ますか?

4

5 に答える 5

7

[]は:

  • 短い
  • より明確
  • 完全に異なることの対象ではなくnew Array(3)new Array(3,3)
  • オーバーライドすることはできません。

コード例:

var a = new Array(3);
var b = new Array(3,3);
Array = function () { return { length: "!" }; };
var c = new Array();
var d = [];
alert(a.length); // 3
alert(b.length); // 2
alert(c.length); // !
alert(d.length);​ // (still) 0​​​​​​​​

このコードはライブです-4つのアラートを作成しようとします!

于 2012-07-30T06:20:13.637 に答える
5

ほとんどの場合、ダグラス・クロックフォードvar a = []がそう言っているので、人々は使用します。

彼の理由には、新しいArray()の直感的で一貫性のない動作が含まれます。

var a = new Array(5);     // an array pre-sized to 5 elements long
var b = new Array(5, 10); // an array with two elements in it

new Array()事前に指定された数値要素が1つだけある配列を作成する方法はないことに注意してください。

[]を使用すると、実際にはより効率的で安全です。配列コンストラクターを上書きして奇妙なことをさせることは可能ですが、[]の動作を上書きすることはできません。

個人的には、私は常に[]構文を使用し、同様に、new Object()の代わりに常に{}構文を使用します。

于 2012-07-30T06:23:37.553 に答える
0

javascriptでは、可能な場合はリテラルを使用する必要があります。

var a = [];それ以外のvar o = new Array();

var o = {};それ以外のvar o = new Object();

同様に、、などは実行しないでnew String("abc");くださいnew Number(1);

于 2012-07-30T06:27:13.410 に答える
0

JavaScriptは典型的な言語であり、C#のような古典言語ではありません。JavaScriptにはC#によく似た新しい演算子がありますが、新しいオブジェクトや配列の作成には使用しないでください。

//Bad way to declare objects and arrays
var person = new Object(), 
    keys = new Array();

新しいキーワードは、古典言語をなだめるために部分的に言語に追加されましたが、実際には、開発者を助ける以上に混乱させる傾向があります。代わりに、JavaScriptにはオブジェクトと配列を宣言するネイティブな方法があり、代わりにそれらを使用する必要があります。

前の構文を使用する代わりに、リテラル表記を使用してオブジェクトと配列を宣言する必要があります。

//Preferred way to declare objects and arrays
var person = {}, 
    keys = [];

このパターンを使用すると、オブジェクトリテラルと配列初期化構文を使用して実際に多くの表現力を得ることができます。

//Preferred way to declare complex objects and arrays
var person = {
        firstName: "Elijah",
        lastName: "Manor",
        sayFullName: function() {
            console.log( this.firstName + " " + 
                this.lastName );
        }
    }, 
    keys = ["123", "676", "242", "4e3"];

ベストプラクティス

新しい操作を使用する代わりに、リテラル表記を使用してすべての変数を宣言する必要があります。同様に、ブール値、数値、文字列、または関数に新しいキーワードを使用しないでください。彼らがしているのは、膨満感を追加して物事を遅くすることだけです。

newキーワードを使用する唯一の本当の理由は、新しいオブジェクトを作成していて、定義したコンストラクターを使用する場合です。このトピックの詳細については、JavaScriptというタイトルのDouglasCrockfordの投稿「WeHardlynewYa」を参照してください

于 2012-07-30T06:34:43.053 に答える
0

推奨される方法は、

var arr = [];

すでにここに答えました

于 2012-07-30T06:20:12.767 に答える