ターゲット:JSの属性名は変数で使用できます
たとえば、JSオブジェクトオブジェクト、オブジェクトに属性を割り当てるとき、次の方法を使用できます
コードコピーは次のとおりです。
varオブジェクト;
object.prop1 = "value1";
object.prop2 = "value2";
次の方法も使用できます。
コードコピーは次のとおりです。
object.push({prop1: "value1"});
object.push({prop2: "value2"});
ここでは、prop1を属性名として使用できます。たとえば、引用符を追加できます。
コードコピーは次のとおりです。
object.push({"<span style =" font-family:arial、helvetica、sans-serif; "> prop1 </span>": "value1"});
式の意味は同じです。つまり、prop1は定数としてのみ認識でき、たとえそれが変数であっても、それは役に立たない、たとえば:
コードコピーは次のとおりです。
var prop1 = "prop2";
object.push({prop1: "<span style =" font-family:arial、helvetica、sans-serif; "> value1 </span>"});
このようなオブジェクトを介してprop2にアクセスするとどうなりますか?例えば:
コードコピーは次のとおりです。
alert(<span style = "font-family:arial、helvetica、sans-serif;"> object.prop2)</span>
もちろん、それは未定義ですが、object.prop1にアクセスする必要はありません。
その理由が言及されています。引用符が追加されているかどうかに関係なく、属性は定数として扱われます。別の例を挙げましょう:
コードコピーは次のとおりです。
var arr = [];
arr ['js'] = 'jQuery';
arr ['css'] = 'oocss';
var obj = {};
for(arr in arr)
{
obj.i = arr [i];
}
アラート(obj.js);
読者は、何の警告を印刷するのだろうと思いますか?
もちろん、それは未定義でした。
もう一度推測してください、アラート(obj.i)の場合、何が印刷されますか?
もちろん、それはOOCSSです、なぜですか? OBJには1つの属性Iのみがあり、2つのループを介してOBJ.Iの前面は背面に上書きされます。
要件がある場合は、属性を動的に追加する必要があります。つまり、属性は変数でなければなりません。上記の例のように、アラート(obj.js)は未定義ではなく、jqueryです。それを変更する方法は?
コードコピーは次のとおりです。
var arr = [];
arr ['js'] = 'jQuery';
arr ['css'] = 'oocss';
var obj = {};
for(arr in arr)
{
obj [i] = arr [i];
}
アラート(obj.js);
そんなに簡単です!オブジェクトOBJを配列として扱うと、サブスクリプトと同様のメソッドを使用して属性と属性値をオブジェクトに割り当てることをサポートします。ただし、オブジェクトはまだオブジェクトであり、obj.lengthは存在しません。