2010-11-27 10 views
0

グローバルでクロージャで宣言された関数を作成するにはどうすればよいですか?これはGoogle Appsスクリプトのため、のウィンドウはありません。ウィンドウを使わずにクロージャグローバルで宣言された関数を作成する

Google Appsスクリプトでクロージャを使用する方法についてのドキュメントがありますが、この例では関数の代わりにオブジェクトが宣言されています。 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

関連する問題