1

このコードは、オブジェクトaのすべてのプロパティ名に警告します。0、1、2、こんにちは。

Object.prototype.hello = {};

var a = [1,2,3];

for ( var number in a ) {
    alert( number)
}

私の質問は、次の構文でプロパティhelloにアクセスできることです。

a.hello

しかし、なぜa.01に等しいはずのアクセスできないのですか?配列のデクレレーションは「実際のプロパティ」を作成しませんか?

a[0]とa["hello"]でプロパティにアクセスできることを知っています

4

4 に答える 4

7

これは構文上の制限です。JavaScriptでは、識別子は数字で始まって0はならないため、有効なものではありません。a.0その後、構文エラーが発生します。

于 2012-09-17T12:30:32.627 に答える
3

理由

JavaScript識別子は、文字、アンダースコア(_)、またはドル記号($)で始まる必要があります。

于 2012-09-17T12:31:06.820 に答える
2

配列内のアイテムには、構文を使用してアクセスしますmyArray[index]。ドット表記では、名前が有効な識別子であるプロパティにのみアクセスでき、配列内のアイテムのインデックス(数値)は修飾されません。したがって、より寛大な角かっこ表記を使用する必要があります。

于 2012-09-17T12:30:38.897 に答える
1

JavaScript識別子は数字で始めることはできません。アクセスしようとしているプロパティは、オブジェクト内の識別子です。

https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Values,_variables,_and_literalsこのフラグメントはここにあります:

変数

アプリケーションの値の記号名として変数を使用します。識別子と呼ばれる変数の名前は、特定の規則に準拠しています。

JavaScript識別子は、文字、アンダースコア(_)、またはドル記号($)で始まる必要があります。後続の文字も数字(0〜9)にすることができます。JavaScriptでは大文字と小文字が区別されるため、文字には「A」から「Z」(大文字)の文字と「a」から「z」(小文字)の文字が含まれます。

JavaScript 1.5以降では、識別子にISO8859-1またはåやüなどのUnicode文字を使用できます。\uXXXXUnicodeエスケープシーケンスを識別子の文字として使用することもできます。

正式な名前の例としては、Number_hits、temp99、および_nameがあります。

于 2012-09-17T12:31:20.800 に答える