9
var something = {

wtf: null,
omg: null
};

私の JavaScript の知識は、最後にプログラミングしたときからまだひどく不完全ですが、今ではそのほとんどを再学習したと思います。これを除いて。これは以前に見た記憶がありません。それは何ですか?そして、どこでそれについてもっと学ぶことができますか?

4

8 に答える 8

17

これはオブジェクト リテラル構文です。「wft」と「omg」はプロパティ名で、null と null はプロパティ値です。

これは以下と同等です:

var something = new Object();
something.wtf = null;
something.omg = null;

オブジェクト リテラルに関する mozilla のドキュメントを確認してください: http://developer.mozilla.org/En/Core_JavaScript_1.5_Guide:Literals#Object_Literals

于 2008-10-07T15:08:40.380 に答える
11

これは、2 つのプロパティを持つオブジェクト リテラルです。JS はそのデータ構造をネイティブにサポートしていないため、通常、これは人々が連想配列またはハッシュを作成する方法です。これはまだ完全なオブジェクトであることに注意してください。関数をプロパティとして追加することもできます。

var myobj = {
    name: 'SO',
    hello: function() {
        alert(this.name);
    }
};

また、for ループを使用してプロパティを反復処理できます。

for (i in myobj) {
    // myobj[i]
    // Using the brackets (myobj['name']) is the same as using a dot (myobj.name)
}
于 2008-10-07T15:15:00.960 に答える
6

「Javascriptで連想配列が欲しい」という立場からの説明(これは多くの場合、オブジェクトリテラルが使用されることになります)

Javascript配列をマスターする」より

連想配列は、数値の代わりに文字列をインデックスとして使用する配列です。

var normalArray    = [];
    normalArray[1] = 'This is an enumerated array';

    alert(normalArray[1]);   // outputs: This is an enumerated array

var associativeArray           = [];
    associativeArray['person'] = 'John Smith';

    alert(associativeArray['person']); // outputs: John Smith   

Javascript には連想配列がなく、サポートされていません。しかし... Javascript のすべての配列はオブジェクトであり、Javascript のオブジェクト構文は連想配列の基本的なエミュレーションを提供します。このため、上記のサンプル コードは実際に機能します。これは実際の配列ではなく、使用しようとすると落とし穴があることに注意してください。この例の「person」要素は、.length、.sort()、.splice()、およびその他すべての組み込みプロパティとメソッドと同様に、Array オブジェクトのプロパティとメソッドの一部になります。

次のループでオブジェクトのプロパティをループできます…</p>

var associativeArray = [];
associativeArray["one"] = "First";
associativeArray["two"] = "Second";
associativeArray["three"] = "Third";
for (i in associativeArray) { 
   document.writeln(i+':'+associativeArray[i]+', '); 
   // outputs: one:First, two:Second, three:Third
};

上記の例では、実際には配列に何も入れておらず、associativeArray のオブジェクトに入れているため、associativeArray.length はゼロになります。associativeArray[0] は未定義になります。

上記の例のループは、データだけでなく、配列に追加されたメソッド、プロパティ、およびプロトタイプも取得します。Prototype ライブラリで人々が抱える多くの問題は、連想配列が壊れてしまうことです。Prototype はいくつかの便利な Prototype 関数を Array オブジェクトに追加し、for i in x ループはそれらの追加メソッドを取得するからです。これは、配列/オブジェクトを貧弱な連想配列として使用することの落とし穴です。

最後の例として、前のコードは、associativeArray を配列 ([])、オブジェクト ({})、正規表現 (//)、文字列 ("")、またはその他の Javascript オブジェクトとして定義するかどうかに関係なく機能します。 .

肝心なのは、連想配列を使用しようとしないでください。それらが何であるかをコード化してください。配列ではなく、オブジェクトのプロパティです。

于 2008-10-07T15:16:18.990 に答える
5

これはオブジェクト リテラルです(または、ハッシュ クラスを含むライブラリのバニラ オブジェクトの場合もあります)。

以下と同じ:

var o = new Object();
o.wtf = null;
o.omg = null;
于 2008-10-07T15:09:17.820 に答える
4

これはオブジェクト リテラルです。これは実質的に次のものと同等です。

var something = new Object();
something["wtf"] = null;
something["omg"] = null;
于 2008-10-07T15:09:15.883 に答える
2

WTF と OMG の 2 つのプロパティを持つオブジェクトだと思います。

あなたは言えた

something.wtf = "myMessage";
alert(something.wtf);

JSON.ORGをチェックしてください

于 2008-10-07T15:08:48.040 に答える
1

このコード:

var something = {wtf:null}

以下と同じ効果があります。

var something={};
something.wtf=null;

または不必要な冗長性のために:

var something=new Object();
something.wtf=null;

最後の行は

something["wtf"]=null;

したがって、次を使用できます。

var myName="wtf";
something[myName]=null;
于 2008-10-07T16:23:44.457 に答える
0

これは、インライン JavaScript オブジェクトのインスタンス化の例です。

于 2008-10-07T15:09:03.560 に答える