Image
異なるオブジェクトを指す個別の変数の山で名前空間を汚染するのではなく、おそらくそれらを配列として構築します。
var imgs = [];
var numImgs = 10;
// In a loop, build up an array of Image objs
for (var i=0; i<numImgs; i++) {
imgs.push(new Image());
// Initialize properties here if necessary
imgs[i].src = 'http://example.com';
}
// imgs now holds ten Image objects...
// Access them via their [n] index
img[3].src = 'http://stackoverflow.com';
これは、複数の変数を作成するよりも多かれ少なかれ効率的ではありませんが、それらを整理しておく方が確かに簡単です。それらを初期化する際に数行のコードを節約しますが、長期的には、それはごくわずかな効果しか持たないマイクロ最適化になります。
それぞれにテキスト記述子が本当に必要な場合は、配列の代わりにImage
オブジェクトを使用して、そのプロパティを小さな記述文字列に設定できることに注意してください。配列を介して初期化することもできます。{}
[]
var imgNames = ['stackoverflow','google','example'];
var imgs = {}
// Initialize object properties in a loop
for (var i=0; i<imgNames; i++) {
// Initialize a property in the object from the current array value using [] notation
imgs[imgNames[i]] = new Image();
}
// Then you can access them by their property name:
imgs.google.src = 'http://www.google.com';
imgs.stackoverflow.src = 'http://stackoverflow.com';
これは、PHPまたはPerlの連想配列のように動作するオブジェクトの誤用に少し国境を接しますが、上記の配列メソッドのように数字キーではなく名前で画像が必要な場合は、画像に簡単にアクセスできます。