次のコードを見て、誰かが JavaScript で値がどのように渡されるか説明できますか?
function loadImages() {
for(var sec in images) {
theme = images[sec];
for(var tsec in theme) {
theme[tsec].img = new Image();
theme[tsec].img.src = 'images/'+theme[tsec].src+'.png';
}
}
}
次に、別の関数で:
function definitionToSpriteDataMapping() {
var result = {};
for(var definition in blocks) {
var sprite = blocks[definition].sprite;
for(var secnm in images) {
section = images[secnm];
for(var spritenm in section) {
if(sprite == spritenm) {
result[definition] = {};
result[definition].img = section.img;
}
}
}
}
return result;
}
簡単にするためにいくつかのコードを切り取りましたが、それでもかなり複雑です。基本的に、ネストされたキーと値のペアである 2 つのオブジェクト (画像とブロック) があります。コードの最初のブロックで
theme = images[sec];
theme[tsec].img.src = 'images/'+theme[tsec].src+'.png';
コードの 2 行目には、
section = images[secnm];
result[definition] = {};
result[definition].img = section.img;
.img が「テーマ」に追加されるコードの最初のブロックの前に、「画像」に .img はありません。しかし、コードの 2 番目のブロックに見られるように、これは「画像」に反映されているようです。すべてのオブジェクトは JavaScript のポインターのようなものですか? 「結果」と「ブロック」との関係は、「テーマ」と「画像」との関係と同じですか? 「テーマ」から要素を削除すると、「イメージ」に反映されますか?