Javascript:调用存储在变量中的方法

时间:2010-11-22 19:26:33

标签: javascript closures

我试图通过在一个上下文中创建一个方法并将其存储在一个全局变量中来利用Javascript闭包,以便稍后可以从另一个上下文中调用它。

//Global variable to hold the function
var revertEvent;

//creates the function and assigns it to the global variable
 function createRevertFunction(eventToBeReverted) {

            revertEvent = function () {
                alert("Now Restoring Event");
                $('#calendar').fullCalendar('renderEvent', eventToBeReverted, true);
            }          
  }

因此,“createRevertFunction”保存原始对象的状态。调用此函数后,该对象“eventToBeReverted”将在路上进行修改,因此这提供了一种在不刷新页面的情况下将原始文件还原到UI的方法。

我的问题是我似乎无法在变量“revertEvent”中调用该函数。

我试过了:

revertEvent();
revertEvent.call();
window[revertEvent]();

并且它们都不起作用。任何帮助将不胜感激......!

4 个答案:

答案 0 :(得分:2)

make createRevertFunction返回内部函数。分配

var revertEvent;

//returns the function so we can do whatever with it
 function createRevertFunction(eventToBeReverted) {

        return function () {
            alert("Now Restoring Event");
            $('#calendar').fullCalendar('renderEvent', eventToBeReverted, true);
        }          
  }


revertEvent = createRevertFunction(e);

答案 1 :(得分:2)

我认为这里最有可能的问题是您在通过revertEvent设置之前尝试致电createRevertFunction。要验证此更改revertEvent的声明如下

var revertEvent = function() { alert('not set yet'); }

如果在createRevertFunction

之前调用它,它会弹出警报“not seet yet”

答案 2 :(得分:1)

>>> var revertEvent; 
undefined
>>> (function() {   revertEvent = function() { alert('hi') }   })();
undefined
>>> revertEvent()

这对我有用。向我们展示您对函数的使用,createRevertFunction ...

答案 3 :(得分:0)

revertEvent仅在您的函数内部定义,之后被遗忘。您必须将其保存到全局变量(在函数外部定义),或者返回创建的函数并存储它。