我在 Mozilla 文档中看到了这个例子。有以下解释:
“在这个纯粹构造的例子中,我们创建了匿名函数并使用 call 在数组中的每个对象上调用它。这里匿名函数的主要目的是为每个对象添加一个打印函数,它能够打印正确的索引数组中的对象。将对象作为这个值传递并不是绝对必要的,而是出于解释的目的。
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);
}
}).call(animals[i], i);
}
我不明白的是在这里做的事情。如果我们没有它,我们不是还在循环通过匿名函数并安慰价值吗?这对关闭有什么作用吗?我只是想了解这里如何使用 .call() 以及为什么。