25Fermer27
onurLe 24/07/2008 à 12:04
non ce qui rame c'est le moteur et c'est pas en js.

sinon en effet, l'ajout de fonction comme ça, ça peut paraitre bizarre, mais en général, on écrase une fonction qui existe déjà. Et la puissance de ce truc c'est les closures: (qui pourraient exister dans les langages compilés, mais à part le C# j'en connais pas d'autres qui en ont)

var me = this;
this.toto = 482;
for(var i=0;i<5;i++){
	var a= tab[i];
	a.i = i;
	a.onclick = function(){
		// ici 'this' est le 'a' à l'extérieur de la fonction
		alert(this.i)		// 0,1,2,3 ou 4
		alert(this.toto);	// undefined
		
		// ici 'me' est le 'this' à l'extérieur de la fonction anonyme
		alert(me.toto);		// 482
	}
}


ce qui permet de faire une fonction capable de générer à la volée des fonctions de collision:

function createCollideFunction(low,high){
	return function(x){
		if (x>low && x<high) return true;
		return false;
	}
}

le jour où vous trouvez des langages qui font ça... (enfin y en a: python, LUA je pense, mais je veux dire le javascript joue dans la cour des grands)