2010-11-27 38 views
0

如何在全局闭包中声明一个函数?这是一个谷歌应用脚​​本,因此没有窗口在不使用窗口的情况下在闭包全局中声明函数

有关于如何在谷歌应用脚​​本中使用闭包的文档,但该示例声明了一个对象而不是函数。 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 
}()); 

回答

0

这应该工作:

var globalFoo; 

(function() 
{ 
    ... 

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

    foo.prototype = 
    { 
     ... 
    } 

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

我已在浏览器中运行一个常规的HTML测试并正常工作。下面是例如:

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()); 

的萤火输出是:

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

感谢。我并不想继续编辑3rdParty的闭包。所以我宣布var window = {};并调用window.foo() – anjanesh 2010-11-27 14:28:24

相关问题