JavaScript で空のオブジェクトを作成するには、次の2 つの方法があります。
var objectA = {}
var objectB = new Object()
スクリプト エンジンがそれらを処理する方法に違いはありますか? どちらか一方を使用する理由はありますか?
同様に、別の構文を使用して空の配列を作成することもできます。
var arrayA = []
var arrayB = new Array()
JavaScript で空のオブジェクトを作成するには、次の2 つの方法があります。
var objectA = {}
var objectB = new Object()
スクリプト エンジンがそれらを処理する方法に違いはありますか? どちらか一方を使用する理由はありますか?
同様に、別の構文を使用して空の配列を作成することもできます。
var arrayA = []
var arrayB = new Array()
new Object();
-を使用する利点はありませんが{};
、コードをよりコンパクトにし、読みやすくすることができます。
空のオブジェクトを定義する場合、技術的には同じです。構文はより短く、{}
より簡潔になり (Java 風ではなくなります)、次のようにオブジェクトをインラインで即座に設定できます。
var myObject = {
title: 'Frog',
url: '/img/picture.jpg',
width: 300,
height: 200
};
new Array();
配列の場合も同様に、 overを使用する利点はほとんどありません[];
- 1 つの小さな例外があります:
var emptyArray = new Array(100);
undefined
すべてのスロットに- を含む 100 アイテムの長い配列を作成します(new Array(9)).join('Na-Na ') + 'Batman!'
。
new Object();
しないでください{};
。[];
事前定義された長さの「空の」配列をすばやく作成する必要がある場合を除いて、常に - を使用してください。はい、違いがあります。同じではありません。同じ結果が得られるのは事実ですが、エンジンは両方で異なる方法で動作します。それらの 1 つはオブジェクト リテラルであり、もう 1 つはコンストラクターであり、JavaScript でオブジェクトを作成する 2 つの異なる方法です。
var objectA = {} //This is an object literal
var objectB = new Object() //This is the object constructor
JS ではすべてがオブジェクトですが、new Object() について次のことに注意する必要があります: パラメータを受け取ることができ、そのパラメータに応じて、文字列、数値、または空のオブジェクトを作成します。
例:new Object(1)
は数値を返します。new Object("hello")
これは、オブジェクト コンストラクターが、パラメーターに応じて、オブジェクトの作成を文字列、数値などの他のコンストラクターに委任できることを意味します。オブジェクトを作成します..
多くの作成者は、代わりに特定のリテラル表記法を使用できる場合は、オブジェクト コンストラクターを使用しないことをお勧めします。この場合、作成しているものはコードに含まれていると期待されるものであることが確実になります。
詳細については、javascript のリテラル表記とコンストラクターの違いをさらにお読みになることをお勧めします。
これらは同じ最終結果をもたらしますが、リテラル構文を使用すると、JSON (JavaScript リテラル オブジェクト構文の文字列化されたサブセット) の構文に慣れるのに役立つことを簡単に付け加えておきます。 .
new
もう 1 つ:演算子の使用を忘れると、微妙なエラーが発生する可能性があります。したがって、リテラルを使用すると、その問題を回避できます。
最終的には、状況と好みによって異なります。
オブジェクトと配列のリテラル構文{}/[]はJavaScript1.2で導入されたため、4.0より前のバージョンのNetscape Navigatorでは使用できません(構文エラーが発生します)。
私の指はまだデフォルトでnewArray()と言っていますが、私は非常に老人です。ありがたいことに、Netscape 3は、今日多くの人が考慮しなければならないブラウザではありません...
var objectA = {}
ははるかに高速で、私の経験では、より一般的に使用されているため、「標準」を採用して入力を節約するのがおそらく最善です。
ここ{}
の Javascript vids の 1 つで、優れたコーディング規約として推奨されたと思います。疑似古典継承に必要です。この方法は、これが古典的なオブジェクト指向言語ではなく、プロトタイプの言語であることを思い出させるのに役立ちます。したがって、本当に必要なのは、コンストラクター関数を使用しているときだけです。例えば:new
var obj = {};
new
var Mammal = function (name) {
this.name = name;
};
Mammal.prototype.get_name = function () {
return this.name;
}
Mammal.prototype.says = function() {
return this.saying || '';
}
次に、次のように使用されます。
var aMammal = new Mammal('Me warm-blooded');
var name = aMammal.get_name();
{}
とは対照的に使用するもう 1 つの利点new Object
は、JSON スタイルのオブジェクト リテラルを実行するために使用できることです。
これは本質的に同じことです。より便利だと思うものを使用してください。