2010-11-27 5 views
0

Comment faire une fonction déclarée dans une fermeture, globale? Ceci est pour un script Google Apps, par conséquent aucune fenêtre .Rendre une fonction déclarée dans une fermeture globale sans utiliser la fenêtre

Il existe une documentation sur l'utilisation des fermetures dans les scripts google apps, mais l'exemple déclare un objet au lieu d'une fonction. http://code.google.com/googleapps/appsscript/articles/appengine.html
var JSON = JSON || {};

// foo = function(){} 
(function() 
{ 
    ... 

    foo = function (a, b) 
    { 
     ... 
    } 

    foo.prototype = 
    { 
     ... 
    } 

    // window.foo = foo; // Not Possible 
}()); 

Répondre

0

Cela devrait fonctionner:

var globalFoo; 

(function() 
{ 
    ... 

    foo = function (a, b) 
    { 
     ... 
    } 

    foo.prototype = 
    { 
     ... 
    } 

    globalFoo = foo; 
    // window.foo = foo; // Not Possible 
}()); 

J'ai fait un test dans un html régulier en cours d'exécution sur le navigateur et est fonctionne très bien. Voici l'exemple:

var globalFoo; 
console.log("O1") 
console.log(globalFoo); 

(function(){ 
    console.log("I1") 
    console.log(globalFoo); 

    var x = 13; 

    var foo = function() { 
     console.log('foo caled ' + x); 
     x++; 
     return true; 
    } 

    foo(); 

    globalFoo = foo; 

    console.log("I2") 
    console.log(globalFoo); 
})(); 

console.log("O1") 
console.log(globalFoo); 
console.log(globalFoo()); 

La sortie Firebug à cette question est:

O1 
undefined 
I1 
undefined 
foo caled 13 
I2 
function() 
O1 
function() 
foo caled 14 
true 
+0

Merci. Je ne voulais pas continuer à éditer la fermeture qui est une 3ème partie. J'ai donc déclaré var window = {}; et appelé window.foo() – anjanesh

Questions connexes