0

私はJavascriptに十分慣れていないので、変数名の作成に関する小さなクエリがあります:

function createObjects(int length) {
  var count;
  for(count=0; count<length; count++;) {
    var personObj + "" + count;
  }  
}

ここで、for ループの反復ごとに異なる personObj を作成したいのですが、これは正しい手順ですか? これは私に与えますか:var personObj1 var personObj2など

ありがとう!マット

4

5 に答える 5

1

しないでください。変数を動的に生成することは決して良い考えではありません。代わりに、オブジェクトまたは配列を使用してください。これらは、関連データのグループを構造化するように設計されています。

function createObjects(length) {
  var count, people = [];
  for(count=0; count<length; count++;) {
    people.push('something');
  }  
  return people;
}
于 2012-04-13T11:37:09.340 に答える
1

同じ基礎となるデータ構造/ロジックの複数のインスタンスが必要な場合は、次のようなアプローチを使用できます。

必要なプロパティ (メソッドも含む) を生成するコンストラクタ関数を作成します。Object例えば:

function PersonObj(name, age) {
    this.name = name;
    this.age = age;
}

PersonObjこれにより、 を使用して の新しいインスタンスを作成できますvar n = new PersonObj('Fred',32);配列を使用して、これらのオブジェクトの複数のインスタンスを格納できるようになりました。

var persons = []; // creates a new Array

for (var i = 1; i < 13; i++){
    persons.push(new PersonObj('Alfred', i));
}

persons1歳から12歳までの12人のアルフレッドが含まれます。

Alfred No. 3 の年齢を変更したい場合は、次のようにします。

persons[2].age = 99;

ライブデモを見る

于 2012-04-13T12:04:36.343 に答える
0

オブジェクトを作成し、オブジェクトにプロパティを追加して、オブジェクトを配列に格納します。

var al = new Array();
function createObjects(int length) {
 var o = new Object();
  for(var count=0; count<length; count++;) {
      o.count = 'some value';
  } 
al.push(o);
}
于 2012-04-13T12:03:37.360 に答える
0

代わりにこれに配列を使用してみませんか?

于 2012-04-13T11:36:06.770 に答える
0

必要に応じて、ウィンドウ オブジェクトに名前付きプロパティを追加することもできます。

function createObjects(int length) {
  var count;
  for(count=0; count<length; count++;) {
    window[personObj + "" + count] = new SomeObject();
  }  
}
于 2012-04-13T11:40:58.773 に答える