これは許可されますか?
myObj = {};
myObj['4a56546s6d']
または、キーは次のような文字で始まる必要があります:
myObj = {};
myObj['x4a56546s6d']
両方を混ぜることはできますか?
myObj = {};
myObj['x4a56546s6d']
myObj['4a56546s6d']
何か(HTMLのIDなど)は文字で始める必要があるので、私はそれを尋ねます。現時点では 番目のバージョン があり、fireBugはキー(数字で始まる)を青でマークしています。
[string]
を使用してキーにアクセスする場合は、スペースのあるキーも含め、任意のキーを使用できます。これらはすべて有効です:
myObj['key with space']
myObj['12345']
ただし、ドット.
演算子を使用してキーにアクセスする場合、キーは有効な識別子である必要があります。つまり、数字で始めたりスペースを含めることはできません。
ドット演算子を使用すると、スペースまたは特殊文字を含まないキー、つまり数値から始まる単語(つまり、変数名として使用できないもの)から値にアクセスできます。そうでない場合は、次のようにそれらに参照できます。連想配列のキー。
必要に応じてキーとして使用できますが、キーは入力した内容の文字列表現になることに注意してください。明確化-toString()と呼ばれます。
見て:
_ var myObj = {};
myObj[ 3 ] = "key is 3";
alert( myObj[ "3" ] ); //alerts "key is 3" because (3).toString() is "3"
//but an error will thrown when accessing by myObj.3
myObj[ {} ] = "key is {}"
alert( myObj["[object Object]"] ) // alerts "key is {}" because ({}).toString() is "[object Object]"
_
toString()
methodをオーバーライドできます。例:
_Object.prototype.toString = function(){ return "object"}
a = {};
a[ {} ] = "whatever";
alert( a["object"] ); // alerts "whatever" because as now toString() returns "object" from each created object
_
このページを参照してください: https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Core_Language_Features#Variables
JavaScript識別子は、文字、アンダースコア(_)、またはドル記号($)で始まる必要があります。後続の文字も数字(0-9)にすることができます。 JavaScriptでは大文字と小文字が区別されるため、文字には「A」〜「Z」(大文字)の文字と「a」〜「z」(小文字)の文字が含まれます。
そのように使用できますが、myObj.4a56546s6d
を使用してデータにアクセスすることはできません。数字で始まる識別子は許可されていないためです。
キー(プロパティ名)が文字列リテラルの場合、最初の文字が数字であっても完全に有効です。
JSの有効なキーの詳細については、 this 質問の回答を参照してください。