代码之家  ›  专栏  ›  技术社区  ›  tpow

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

  •  2
  • tpow  · 技术社区  · 14 年前

    我试图利用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”保存原始对象的状态。在调用此函数之后,对象“eventToBerevered”将被修改,因此这提供了一种在不刷新页面的情况下将原始对象还原到UI的方法。

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

    我试过:

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

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

    4 回复  |  直到 14 年前
        1
  •  2
  •   JaredPar    14 年前

    我想最可能的问题是你想打电话 revertEvent 在设置之前 createRevertFunction . 为了验证此更改,声明 回复事件 如下所示

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

    如果之前打过电话,就会弹出“还没看到”的警报 createRevertFunction

        2
  •  2
  •   jon_darkstar    14 年前

    使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);
    
        3
  •  1
  •   meder omuraliev    14 年前
    >>> var revertEvent; 
    undefined
    >>> (function() {   revertEvent = function() { alert('hi') }   })();
    undefined
    >>> revertEvent()
    

    这对我有用。告诉我们你对函数的用法, createRevertFunction ...

        4
  •  0
  •   Lucas Moeskops    14 年前

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