2013-07-27 40 views
1

我有这样的事情:为闭包声明两次函数?

// 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()从控制台被调用,所以我封闭它的匿名函数内。所以,如果我需要将它称为其他地方,我是否宣布它两次,或者我该怎么做?

+0

[你可以暴露闭包之外的功能](http://stackoverflow.com/a/13074081/1257652)来完成你所需要的。 –

回答

1
  1. 匿名函数内定义thisIsCalledByAnOnclick()。
  2. 用addEventListener分配onClick句柄。
2

在关闭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() 
     } 
    }; 
}(); 
0

可以USEE一个构造函数来封装两种功能。一个是公共职能部门,另一个是私人部门。

D.

0
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) 
} 
+0

为什么人们不喜欢,不必要...这个代码工作正常.. –