2012-04-16 7 views
1
var my = {}; 

my["1"] = "tom"; 

my["2"] = "tony"; 

document.writeln(my["2"]); 

簡単な質問ですが、{}は何と呼ばれていますか?私は[]がarraylistと呼ばれ、私はmy.indexOf()などを行うことができます知っているが、これは{}では動作しません。私は{}javascriptで{}のリストは何ですか?

+0

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/create – malletjo

+0

https://developer.mozilla.org/en/JavaScript/Guide/Working_with_Objects ...もう少し読むべきです。 – malletjo

+0

大丈夫、ありがとう。まったく新しいコーディングです。 – RedHotScalability

答えて

2

具体的には、その場合には、{}オブジェクト・リテラル表記を意味します。それはObjectを作成する1つの方法である言語の構文上の特徴です。

この...

var my = {}; 

は...単純に直接任意のプロパティを所有していないオブジェクトを作成します。

同じオブジェクトリテラルの構文を使用して、オブジェクトプロパティをすぐに指定することができます。

var my = { 
    '1': 'tom', 
    '2': 'tony' 
}; 

Objectコンストラクタを使用することで、空のオブジェクトを作成するための同等のコード...

var my = new Object(); 

JavaScriptのオブジェクトは順序付けられていないことに注意してください。指定した数値インデックスは、オブジェクトを列挙するときに並べ替えを保証するものではありません。順序付けられたループを取得するには、キーの配列を取得し、配列をソートしてから、配列を反復処理する必要があります。例えば

...

var my_keys = Object.keys(my); 

my_keys.sort(function(a,b) { 
    return a - b; 
}); 

for (var i = 0; i < my_keys[i]; i++) 
    console.log(my[my_keys[i]]); 
5

{}でリストを使用して実行できる操作のリストを見つけることができます

は、オブジェクトと呼ばれ、あなたの宣言で:

var my = {}; 

あなただけの空のオブジェクトを作成しているにプロパティを追加することができます。

[x]構文を使用して、アレイとオブジェクトの両方にアクセスできます。配列は最高のように数値インデックス付きのシーケンシャルアクセスに使用されています

my["autoSaveTime"] 
my.autoSaveTime 

一部の人々はまた、などのオブジェクトを考える:

x[1] 
x[2] 

オブジェクトは最高のような非連続的な文字列のインデックスとのアクセスに使用されていますハッシュテーブルまたは連想配列を使用することができます。これは、他のプログラミング構造と同様の目的を果たします。

あなたのコメントで質問したところでは、配列は.lengthのようなプロパティを持ち、.push().pop()のようなメソッドを持っています。オブジェクトはそうではありません。 MDNは、このようなことに関する参考情報の優れた情報源です。ここにはMDN page on array methodsがあり、ここにはgood overview on working with objectsがあります。

オブジェクトにはこれらのメソッドがありません。オブジェクトには順序はありませんので、配列に割り当てられているか、配列を読み込んだり、配列を繰り返したり、配列を変更したりする必要はありません。理解する

var x = my.autoSaveTime; 
my.autoSaveTime = 200; 
for (var key in my) { 
    var item = my[key]; 
    // do something with item or key here 
} 

一つトリッキーな事は、追加のアレイ機能を追加してアレイは、実際に、Objectから派生していることです。つまり、配列にはオブジェクトのようなプロパティという名前の任意の文字列を含めることができ、オブジェクトにはすべての汎用メソッドがあります。オブジェクトに配列機能とメソッドがありません。したがって、配列はオブジェクトのスーパーセットです。

+0

ああ、どこでオブジェクトのプッシュ、ポップ、長さ()のようなプロパティのリストを見つけることができますか? – RedHotScalability

+0

私は答えに配​​列メソッドへの参照を追加しました。 – jfriend00

関連する問題