【问题标题】:Declare function twice for closure?两次声明函数以关闭?
【发布时间】:2013-07-27 20:38:43
【问题描述】:

我有这样的东西:

// This executes once when the page loads.
(function() {
    //under some conditions, it calls:
    myfunction();

    function myFunction() {  
        // defines function
    }
}());

function thisIsCalledByAnOnClick() {
    // HERE I need to call myFunction()
}

我不想从控制台调用myFunction(),所以我将它包含在匿名函数中。那么,如果我需要在其他地方调用它,我应该声明两次还是我该怎么办?

【问题讨论】:

标签: javascript closures iife


【解决方案1】:

在闭包内thisIsCalledByAnOnClick 可以访问myFunction。如需更多信息,请参阅:module pattern

// This executes once when the page loads.
var modul = function() {
    //under some conditions, it calls:
    myfunction();

    function myFunction() {
        // defines function
    }

    return {
        thisIsCalledByAnOnClick : function() {
        // HERE I need to call myFunction()
        }
    };
}();

【讨论】:

    【解决方案2】:
    1. 在匿名函数中定义 thisIsCalledByAnOnclick()。
    2. 使用 addEventListener 分配 onClick 句柄。

    【讨论】:

      【解决方案3】:

      您可以使用构造函数来封装这两个函数。一个作为公共函数,另一个作为私有函数。

      D.

      【讨论】:

        【解决方案4】:
        function() {
             xyz = function() {
                   return this;
                   };
        
             xyz.prototype= {
        
             Myfunction1 : function(param1,param2)  {
             //some code!!!
             },
             Myfunction2 : function(param1,param2) {
             //some code!!!
             }
             };
        })();
        
        function thisIsCalledByAnOnClick() {
        
                instance=new xyz();
                instance.Myfunction1(a,b)
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-11-23
          • 1970-01-01
          • 2017-07-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-21
          相关资源
          最近更新 更多