2009-08-05 20 views
0

ちょうど不思議です。 次のように私はそのプロトタイプを使用してJavaScriptのArrayオブジェクトを拡張していますJavascript配列の拡張子

<html> 
<head> 
</head> 
<body> 
<script type="text/javascript"> 
    function SomeMethod(){ 
    alert('Hello'); 
    } 
    if(typeof Array.prototype.SomeMethod ==='undefined'){ 
    Array.prototype.SomeMethod = SomeMethod; 
    } 
    var ax=new Array("A","B","C"); 
    for(var i in ax){ 
    document.write(ax[i]); 
    } 
</script> 

</body> 
</html> 

は、結果は次のようになります。

ABCfunction SomeMethod() { alert("Hello"); } 

編集:私はすでに答えを発見したが、 は、私はいくつかの を追加する必要性を感じますそれは他の人にとってはより明確になるでしょう。

+0

がどこかに隠された質問はありませんでしょうか? –

+0

あなたが私たちに与えたことは、単に "ABC"を出力します。 –

+1

for ... forは配列上では使用できませんが、そのためには設計されていません –

答えて

2

このリンクを読みますか? JSは、あなたがプロトタイプに追加するには、プロパティに「DontEnum」を設定することはできませんので、あなたは、配列の性質を持っているかどうかを確認する必要がある、またはそれはそのプロトタイプのプロパティの場合:

for(var i in ax) { 
    if (a.hasOwnProperty(i)) { 
     document.write(ax[i]); 
    } 
} 

ものの配列を繰り返し処理するには、配列の要素ではなくオブジェクトのプロパティを反復処理するために、実際にfor...inを使用するべきではありません。

1

クロフトフォードは、このon his siteとその動画を説明するうえで素晴らしい仕事をしています。あなたがハッシュテーブルとしてそれを使用して、Array型を酷使しているように聞こえます。その場合、あなたはクロックフォードから次

を実行する必要があります。

JavaScriptが ハッシュテーブルを操作するための非常に素晴らしい表記 便利さを持っています。

var myHashtable = {}; 

この文は、新しいハッシュテーブル を作り、新しいローカル 変数に割り当てます。 JavaScriptは緩く型付きされているので、 宣言で型名を使用しません。サブスクリプト 表記を使用して、ハッシュテーブル内の 要素を追加、置換、または取得します。

myHashtable["name"] = "Carl Hollywood"; 

もう少し便利な のドット表記もあります。 添字法的識別子の 形で文字列定数である場合

myHashtable.city = "Anytown"; 

ドット表記を使用することができます。 の言語定義にエラーがあるため、 予約語は ドット表記では使用できませんが、添字表記の で使用できます。

JavaScriptの ハッシュテーブル表記は、 Javaのオブジェクトと配列の表記法に非常によく似ています。 JavaScriptはかなり遠く、これを取る: オブジェクトと、ハッシュテーブルは同じ ものですので、私は

var myHashtable = new Object(); 

を書かれている可能性があり、結果が正確に 同じだったでしょう。

for文に組み込まれた列挙機能 があります。

for (var n in myHashtable) { 
    if (myHashtable.hasOwnProperty(n)) { 
     document.writeln("<p>" + n + ": " + myHashtable[n] + "</p>"); 
    } 
} 

私はあなたのためにこれを行う.eachコードjqueryのを信じて、私は100%確実ではないです。

あなたは実際アレイを使用して、適切にそれを使用したい場合は、あなただけの

for (var i = 0; i < myArray.length; i++) 
{ 
    alert(myArray[i]); 
}