JavaScriptでこのことは何ですか?
-
05-07-2019 - |
質問
var something = {
wtf: null,
omg: null
};
JavaScriptの知識は、最後にプログラミングしてからまだまだひどくパッチが多いですが、今ではほとんどのことを再学習したと思います。これを除いて。これを見たことは今まで覚えていません。それは何ですか?そして、それについてどこでもっと学ぶことができますか?
解決
これは、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)
}
他のヒント
これはオブジェクトリテラルの構文です。 「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
「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オブジェクトのプロパティとメソッドの一部になります。
次のループでオブジェクトのプロパティをループできます…
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.lengthはゼロになります。これは、実際にはArrayに何も入れなかったため、associativeArrayのオブジェクトに入れたためです。 associativeArray [0]は未定義になります。
上記の例のループは、データだけでなく、配列に追加されたメソッド、プロパティ、およびプロトタイプも取得します。 Prototypeライブラリで多くの問題を抱えているのは、Prototypeがいくつかの便利なPrototype関数をArrayオブジェクトに追加し、for i for xループがこれらの追加メソッドを選択するため、連想配列が壊れることです。これは、配列/オブジェクトを貧乏人の連想配列として使用することの落とし穴です。
最後の例として、以前のコードは、associativeArrayを配列([])、Object({})、正規表現(//)、String("")、またはその他のJavaScriptオブジェクト。
要点は-連想配列を使用しようとしないでください、それらが何であるかのコード-配列ではなくオブジェクトのプロパティです。
オブジェクトリテラル(または、ハッシュクラスを含むライブラリのバニラオブジェクト)。
同じもの:
var o = new Object();
o.wtf = null;
o.omg = null;
これはオブジェクトリテラルです。これは実質的に次と同等です:
var something = new Object();
something["wtf"] = null;
something["omg"] = null;
WTFとOMGという2つのプロパティを持つオブジェクトだと思います。
言うことができます
something.wtf = "myMessage";
alert(something.wtf);
JSON.ORGをチェック
このコード:
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;
これは、インラインJavaScriptオブジェクトのインスタンス化の例です。