2009-12-14 3 views

Répondre

2

Quelque chose comme ça? Vous pouvez remplacer la valeur de this en définissant votre propre contexte, mais il est très utile de pouvoir accéder à l'objet DOM en tant que this dans jQuery, et une partie fondamentale du fonctionnement de jQuery. Si vous deviez changer cela, je dirais que vous n'utilisez pas du tout jQuery. Ainsi, au lieu, je passe contexte comme paramètre ici ...

function Customer(name){ 
    this._name=name; 
}; 

Customer.prototype.init=function(){ 
    $('#SetCreditLevel').click((function(context){ 
     return function() { 
      alert(context._name); 
      alert(this); 
     } 
    })(this)); 
} 
+0

cela fonctionne, mais je ne comprends pas complètement comment. Je vois une fonction anonyme auto-exécutable qui est passée le contexte, - cette partie je comprends. Le corps de cette fonction est un mystère pour moi, cependant. Pourquoi la fonction est-elle retournée? Comment ça marche? – Valentin

+1

c'est la beauté des javascript * scopes *. Le "clic" de jQuery attend une fonction. donc vous exécutez du code qui renvoie une fonction, qui est ensuite utilisée comme paramètre d'entrée 'click'. le code en cours d'exécution accepte un paramètre 'context', et comme il le fait, cela devient une partie de * scope * de la fonction interne, de sorte qu'il peut y être accédé, avec n'importe quelle valeur transmise à la fonction parente. –

+0

C'est très élégant, l'utilisation de la vie réelle des fermetures – Valentin

Questions connexes