O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Problemas com forEach

Iniciado por Geraldo de Rívia, 13/06/2017 às 10:59

Saudações, galera!

Seguinte, eu sempre me esquivei do .forEach, dando um jeito de usar o .for no lugar. Porém, para fins de aprendizado e até mesmo parar de usar essa recursividade do for e encaixar o forEach quando cabível, queria entender como ele funciona. Tenho o exemplo que é onde estou tentando implantar: Há uma array para o sistema de partículas, cada índice da array equivale a uma partícula, logo, quando preciso atualizar as partículas, eu atualizo cada índice da array, daí tentando usar o .forEach.

linha que usar o forEach:
this.weatherParticles.forEach(this.updateWeatherParticles);


Função que o .forEach roda em cada índice:
Scene_Map.prototype.updateWeatherParticles = function(element, index, array) {
		element.x += 1;
		element.y += 2;
		if (this.particleOutsideBounds(element.x, element.y)) {
			this.removeChild(array[index]);
			array.splice(index, 1);
			index--;
		};
	};


O problema é que está dando como inexistente a função particleOutsideBounds, que existe e está com a sintaxe correta. element.x e element.y também não estão como undefined, então creio estar errado algo nos argumentos recebidos pela função. Usei como base o primeiro exemplo dessa página.
Teria como me darem uma luz sobre quais argumentos o forEach envia e quais a funçaõ recebe? Porque, os exemplos que vi no maker possuem a função na mesma linha em que o forEach é usado, e não encontrei nenhuma que usasse três argumentos como na página linkada.

O this dentro do forEach é naturalmente undefined. Mas o senhor pode passar um segundo argumento na função determinando o quê será o this:

this.weatherParticles.forEach(this.updateWeatherParticles, this);


Um exemplo:

var dog = { goodBoy: 0 };
var whoIsTheGoodBoy = [15, 20, 40, 10];

whoIsTheGoodBoy.forEach(function(who) {
  this.goodBoy += who;
}, dog);

console.log(dog);


o/