2009-07-29 7 views

Répondre

9
object["set" + $fieldID]($fieldValue); 

Certains documents de lecture pour ce qui précède: Member Operators sur MDC. Les méthodes avancées incluent Function.prototype.call et Function.prototype.apply. Le premier est en quelque sorte équivalent à call_user_func() de PHP tandis que ce dernier est en quelque sorte l'équivalent de PHP call_user_func_array(). La différence entre les fonctions de PHP et JavaScript est que JavaScript vous permet d'appeler des méthodes d'un objet dans le contexte d'un autre objet. Ceci est fait en utilisant le premier argument de call() et apply().

Un équivalent pour l'exemple ci-dessus, mais en utilisant call() et apply() ressemble à ceci:

object["set" + $fieldID].call(object, $fieldValue); 
object["set" + $fieldID].apply(object, [$fieldValue]); 

Le premier argument doit être object sinon la méthode sera exécutée avec le pointeur this lié à l'objet global, window dans le cas des navigateurs.

+0

Vous monsieur, sont un Geezer de diamant. Merci. –

4

@lonut est correct. Mais plus généralement, si vous voulez appeler des fonctions qui ne sont pas une partie d'un objet explicite (par exemple .: global), vous pouvez les appeler sur l'objet window:

var foo = function() { alert(1); }; 
window['foo'](); 

puisque tous les objets sont contenus dans window.

Un autre exemple:

var object = function() { this.method = function() { alert(2); }; } 
var instance = new object(); 
window['instance']['method'](); 
+1

Oui, l'appel de fonctions globales en utilisant 'window' ou quelque chose comme' this ['foo'](); '(lorsque l'objet global n'est pas nommé' window') est utile. +1 –

+0

Merci pour les informations supplémentaires :) –

Questions connexes