MDNから:
var animals = [
{species: 'Lion', name: 'King'},
{species: 'Whale', name: 'Fail'}
];
for (var i = 0; i < animals.length; i++) {
(function (i) {
this.print = function () {
console.log('#' + i + ' ' + this.species + ': ' + this.name);
}
this.print();
}).call(animals[i], i);
}
上記の例では、"animals" ループ内の無名関数で "this" がどのように使用されているのでしょうか? 「これ」がウィンドウではなく動物オブジェクトを参照している理由が気になります。
たとえば、引数からanimal[i]を削除すると、すべてが未定義になります。それは、匿名関数が受け取った最初のパラメーターから「ID」を取得することを意味しますか、それとも何か他のことが起こっているのでしょうか?
前もって感謝します!