1
var my = {};

my["1"] = "tom";

my["2"] = "tony";

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

簡単な質問ですが、{}は何と呼ばれていますか?[]はarraylistと呼ばれ、my.indexOf()などを実行できますが、これは{}では機能しません。

{}を使用して実行できる操作のリストはどこにありますか

4

3 に答える 3

5

{}オブジェクトと呼ばれ、宣言では次のようになります。

var my = {};

空のオブジェクトを作成し、そこにプロパティを追加するだけです。

構文を使用して、配列とオブジェクトの両方にアクセスでき[x]ます。配列は、次のような数値インデックスを使用した順次アクセスに最適です。

x[1]
x[2]

オブジェクトは、次のような非順次文字列インデックスを使用したアクセスに最適です。

my["autoSaveTime"]
my.autoSaveTime

オブジェクトは他のプログラミング構造と同様の目的を果たすことが多いため、オブジェクトをハッシュテーブルまたは連想配列と考える人もいます。

コメントで尋ねた質問によると、配列には、のようなプロパティと、のような.lengthメソッドが.push()あり.pop()ます。オブジェクトはそうではありません。MDNは、このようなことに関する参照情報の優れた情報源です。これが配列メソッドのMDNページであり、オブジェクトの操作に関する概要です

オブジェクトにはこれらのメソッドがありません。オブジェクトには順序がないため、配列の場合のように順序を変更する必要がないため、オブジェクトに割り当てるか、読み取るか、反復するか、プロパティを削除するだけです。

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

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

于 2012-04-16T16:03:41.817 に答える
2

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

これ...

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]]);
于 2012-04-16T16:05:57.920 に答える
0

「オブジェクト」 http://www.dyn-web.com/tutorials/obj_lit.php

于 2012-04-16T16:05:09.783 に答える