2009-02-19 8 views
1

Il semble que "myFunction" dans l'exemple suivant perde sa portée.

$().grep(myArray, myFunction) 

Par cela, je veux dire qu'il n'a plus accès à la « cette » du champ d'application, il a été défini dans, et « ce » devient l'objet de la fenêtre. Quelqu'un peut-il expliquer pourquoi c'est et s'il y a un moyen pratique de préserver la portée de myFunction? Ce truc de fermeture de javascript à mi-chemin fait ma tête, mais j'essaie d'être facile avec ça.

Répondre

2
$.grep(myArray, function(){ 
    return myFunction.apply(realScope, arguments); 
}); 

Remplacez "realScope" par la portée prévue - ce que vous voulez que la valeur de 'this'.

+0

cool. merci JimmyP – morgancodes

Questions connexes