📅  最后修改于: 2023-12-03 15:16:05.235000             🧑  作者: Mango
在JavaScript中,我们可以使用forEach()函数来循环遍历数组中的每个元素,并且可以为每个元素执行一个回调函数。但是,forEach()函数有一个非常重要的参数,即"this"指向。
在forEach()函数中,我们可以通过第二个参数指定回调函数中的"this"值。默认情况下,回调函数中的"this"值指向全局对象(在浏览器中就是"window"对象)。但是,我们经常需要使用forEach()函数来迭代一个对象数组,并且在回调函数中使用该对象的属性和方法。这时候,我们就需要使用第二个参数来明确设置"this"值指向的对象。
例如,我们有一个对象数组,每个对象都有一个"name"属性和一个"sayHi"方法:
var people = [
{ name: "Tom", sayHi: function() { console.log("Hi, I'm Tom."); } },
{ name: "Jerry", sayHi: function() { console.log("Hi, I'm Jerry."); } }
];
如果我们使用forEach()函数遍历这个数组,并在回调函数中调用"sayHi"方法,我们需要使用第二个参数来将"this"值指向当前正在遍历的对象:
people.forEach(function(person) {
this.sayHi(); // this指向当前遍历的对象
}, people[0]);
第二个参数"people[0]"明确将回调函数中的"this"值指向了第一个对象,因此在回调函数中可以直接使用"this"来调用"sayHi"方法。
在使用forEach()函数遍历对象数组时,需要注意回调函数中的"this"值指向的问题。如果需要在回调函数中使用该对象的属性和方法,可以使用第二个参数明确设置"this"值指向的对象。