使闭包中声明的函数成为全局函数,而不使用 window

发布于 2024-10-04 12:26:03 字数 529 浏览 3 评论 0原文

如何使闭包中声明的函数成为全局函数?这是针对 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
}());

How do I make a function declared in a closure, global ? This is for a google apps script, hence no window.

There is documentation on how to use closures in google apps scripts, but the example declares an object instead of a function.
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
}());

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笑,眼淚并存 2024-10-11 12:26:03

这应该有效:

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

firebug 的输出是:

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

This should work:

var globalFoo;

(function ()
{
    ...

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

    foo.prototype =
    {
        ...
    }

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

I've made a test in a regular html running on the browser and is works fine. Here is the example:

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

The firebug output to that is:

O1
undefined
I1
undefined
foo caled 13
I2
function()
O1
function()
foo caled 14
true
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文