2010-11-16 8 views
1

de prenez en considération ce code:contexte prioritaire automatique dans les fonctions javascript

function a() { 
    alert(this.variable); 
} 

b = new function() { 
    this.variable = "abc"; 
    a.call(this); 
} 

est-il un moyen de contexte de remplacement automatique au lieu d'utiliser la méthode d'appel? comme celui-ci (ne fonctionne pas):

function a() { 
    var _this = Function.caller; 
    alert(_this.variable); 
} 

b = new function() { 
    this.variable = "abc; 
    a(); 
} 

Merci à l'avance.

Répondre

0

Si vous voulez a avoir accès à l » thisb, vous devrez passer this explicitement, à savoir au lieu de faire a()a(this).

+0

Les bibliothèques de Javascripts offrent souvent un moyen de le faire pour vous, par exemple Prototype.js a 'bind'. Mais dans tous les cas, cela doit être fait par le code appelant: la fonction elle-même peut être appelée de différentes manières et n'a pas d'accès privilégié au contexte à partir duquel elle a été appelée. –

+0

en passant cela à une fonction n'est pas une bonne solution, dans mon premier exemple j'utilisais la méthode d'appel pour survoler le contexte dans la fonction a, ce que je veux est de surcharger automatiquement le contexte en regardant le contexte de la fonction appelant. – Seby

+0

@Colin Oui, vous avez raison, merci pour la clarification. – Skilldrick