2012-02-23 2 views
2

Récemment, je me suis lancé dans les fonctions anonymes et je me suis demandé comment cela était possible car j'essaye de réorganiser ma base de code JS.Fonctions jQuery anonymes - fonctions d'imbrication

(function (listLoad, $, undefined) { 
    listLoad.create = function(data) 
    { 
     this.init = function(data) 
     { 
     } 
    } 
} (window.listLoad = window.listLoad || {}, jQuery)); 

Ce que je cherche à faire est d'avoir évidemment un certain nombre de fonctions pour ma page « listLoad », tels que « Datamap » etc, dans lequel seront tous ont des fonctions init pour initialiser la page.

Ma question principale est de savoir comment accéder à cette fonction .init? Je suppose que c'est de portée privée. J'ai essayé:

listLoad.create.init = function(data) 

et

create.init = function(data) 

et même init = function(data)

Tous les pas de succès lors de l'écriture

listLoad.create.init(); 

Comment faire? Je suis plus qu'heureux d'entendre aussi certaines suggestions sur l'architecture si vous vous sentez mal dans mon scénario.

Répondre

3

En fait votre syntaxe pour la fonction anonyme n'est pas complète.

D'abord, vous devez exécuter le bloc annonymous avec des parenthèses fin

(function (...) { 
    ... 
})(...) 

A l'intérieur du bloc, votre code pourrait être amélioré ainsi:

var listLoad = {}; 

(function (x) { 
    x.create = { 
     init: function(data) { 
      console.log('plop'); 
     } 
    } 
})(listLoad); 


listLoad.create.init() 

Cette provoke plop à ApparaîTre connecté à la console .

+0

C'est incroyable, merci! Pour référence, ma fonction anon était en cours d'exécution, mais j'avais besoin de changer la syntaxe à listLoad.create = {init: function (data) {}} Encore une fois, merci! –

Questions connexes