اجعل الوظيفة تعلن في الإغلاق العالمي دون استخدام نافذة

StackOverflow https://stackoverflow.com/questions/4291942

  •  28-09-2019
  •  | 
  •  

سؤال

كيف أقوم بعمل وظيفة معلنة في إغلاق ، عالمية؟ هذا مخصص لبرنامج Google Apps ، وبالتالي لا نافذة او شباك.

هناك وثائق حول كيفية استخدام عمليات الإغلاق في البرامج النصية لتطبيقات Google ، لكن المثال يعلن كائنًا بدلاً من وظيفة.http://code.google.com/googleaps/appsscript/articles/appengine.html
var json = json || {} ؛

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

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

    foo.prototype =
    {
        ...
    }

    // window.foo = foo; // Not Possible
}());
هل كانت مفيدة؟

المحلول

هذا يجب أن يعمل:

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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top