14

重複の可能性:
javascript - 動的変数
動的 Javascript 変数名

ページ上に多数のオブジェクトを作成する必要があり、それらに順番に名前を付けたいと考えています。JavaScriptでこれを行う方法はありますか?

for (i=0;i<num;i++){
  var obj+i = new myObject("param1","param2");
  obj+i.someProperty = value;
}

このようにして、さまざまな数のオブジェクト (値「num」に依存) を動的に作成し、それらのプロパティを適切に設定できます。

これは PHP で実行できますが、JavaScript で実行する方法はありますか?

4

3 に答える 3

13

これはお勧めしませんが、あなたがしようとしていることは実行します (他の js 環境ではなくブラウザーで実行している場合)。

for (i = 0; i < num; i++) {
  window['obj' + i] = new myObject("param1","param2");
  window['obj' + i].someProperty = value;
}
obj0.someProperty;

これが機能するのは、グローバル変数が実際には window オブジェクトのプロパティであるためです (ブラウザーで実行している場合)。ドット表記 (myObject.prop) またはブラケット表記 (myObject['prop']) を使用して、オブジェクトのプロパティにアクセスできます。window['obj' + i] を割り当てると、'obj' + i という名前のグローバル変数が作成されます。

より良いオプションは、配列または親オブジェクトを使用してオブジェクトを格納することです。

myObjs = {};
for (i = 0; i < num; i++) {
  myObjs['obj' + i] = new myObject("param1","param2");
  myObjs['obj' + i].someProperty = value;
}
myObjs.obj0.someProperty;

または、他の多くの回答が示唆するように配列を使用します。

于 2012-10-10T18:45:27.990 に答える
7

それが、何かのコレクションを保持するための配列の目的です。

var objs = [];
for (i=0;i<num;i++){
  objs[i] = new myObject("param1","param2");
  objs[i].someProperty = value;
}

動的変数は、ほとんどの場合、悪い考えです。

于 2012-10-10T18:44:20.667 に答える
0

そのオブジェクトのプロパティを作成したり、設定/変更したりできます。

変更されたコード:

var obj = {}; //
for (i=0;i<num;i++){
  obj[i] = new myObject("param1","param2");
  obj[i].someProperty = value;
}

配列を使用することをお勧めします。なので

 var obj = []; //
    for (i=0;i<num;i++){
      obj[i] = new myObject("param1","param2");
      obj[i].someProperty = value;
    }
于 2012-10-10T18:42:24.443 に答える