2010-10-26 6 views
1

J'essaie de comprendre le bloc de code suivant et suis un peu perplexe .. spécifiquement je suis confus quant à ce que la partie YAHOO.example.XHR_JSON = est à propos. Il semble que nous créons une méthode anonyme qui crée une méthode anonyme nommée?Que signifie la fonction de syntaxe() {name = function() {} en JavaScript?

YAHOO.util.Event.addListener(window, "load", function() { 
    YAHOO.example.XHR_JSON = function() { (blah blah blah) }; 

Si j'essaie de changer le YAHOO.exmaple.XHR_JSON à quelque chose comme FooBar et on me dit que foobar n'est pas défini.

Toute aide est comme toujours très apprécié ..

Répondre

1

XHR_JSON est juste une propriété de l'objet YAHOO.example. Vous pouvez affecter n'importe quoi à cette propriété, y compris une fonction.

Si vous avez essayé les éléments suivants:

YAHOO.util.Event.addListener(window, "load", function() { 
    YAHOO.example.XHR_JSON = 'foobar'; 
}); 

.. alors YAHOO.example.XHR_JSON sera mis à 'foobar' à terme, mais seulement après l'événement load a tiré. C'est probablement pourquoi vous avez obtenu undefined lorsque vous avez vérifié la valeur.

0

Il y a deux fonctions anonymes. Le premier paramètre YAHOO.example.XHR_JSON à la valeur de la deuxième fonction anonyme. Ce n'est pas la même chose que de définir une fonction nommée. C'est juste de définir une variable à une valeur qui est une autre fonction. C'est un moyen de différer l'exécution. Peut-être un deuxième exemple serait utile:

var lightFuse = function() { bomb.actionToTakeIn30Seconds = function() { beep(); explode(); } } 
0

Cela semble être la ligne générant la confusion

YAHOO.example.XHR_JSON = function() { (blah blah blah) }; 

Ceci est affecter un objet fonction à une propriété XHR_JSON sur la propriété example sur YAHOO.

Il aurait pu être séparé comme suit

var v1 = YAHOO.example 
v1.XHR_JSON = function() { (blah blah blah) }; 
0

On dirait que vous avez juste besoin de définir FooBar en premier ...? par exemple.

var FooBar = function() { alert("Foo"); } 
var OtherFunction = function() { 
    this.myFunc = FooBar; 
} 
var instance = new OtherFunction(); 
instance.myFunc(); 
0
var foo = funvtion(){... code ...}; 

est à peu près la même chose que

function foo() { ... code... }; 

L'idée principale du code est que le assignemnt de XHR_JSON se fait après l'événement « charge » de la page est déclenchée et toutes les DOM les éléments sont établis.

Questions connexes