如何执行一个方法作为parameter passing给函数

我想在JavaScript中编写自己的函数,它采用callback方法作为参数,并在完成后执行它,我不知道如何调用我的方法中作为parameter passing的方法。 像反思一样。

示例代码

function myfunction(param1, callbackfunction) { //do processing here //how to invoke callbackfunction at this point? } //this is the function call to myfunction myfunction("hello", function(){ //call back method implementation here }); 

你可以把它叫做普通函数:

 function myfunction(param1, callbackfunction) { //do processing here callbackfunction(); } 

唯一的额外的事情是提到上下文 。 如果你想在你的callback中使用this关键字,你必须分配它。 这是经常需要的行为。 例如:

 function myfunction(param1, callbackfunction) { //do processing here callbackfunction.call(param1); } 

在callback中,您现在可以像this访问param1 。 请参阅Function.call

我也进入了相同的情况下,我必须调用作为参数发送到另一个函数的function。

我试过了

 mainfunction('callThisFunction'); 

第一种方法

 function mainFuntion(functionName) { functionName(); } 

但最终会出现错误。 所以我试了

第二种方法

 functionName.call(). 

仍然没有用。 所以我试了

第三种方法

 this[functionName](); 

像冠军一样工作。 所以这只是添加一个更多的调用方式。 可能是我的第一和第二种方法可能会有问题,但是我花更多的时间去花时间去第三种方法。

 function myfunction(param1, callbackfunction) { //do processing here callbackfunction(); // or if you want scoped call, callbackfunction.call(scope) } 

另一种方法是将您的函数声明为匿名函数并将其保存在一个variables中:

 var aFunction = function () { }; 

之后,您可以传递一个函数作为参数myfunction并正常调用它。

 function myfunction(callbackfunction) { callbackfunction(); } myfunction(aFunction); 

但是,正如其他答案已经指出,没有必要,因为你可以直接使用函数名称。 由于评论中的讨论,我将保留原样的答案。

我会做这样的事情

 var callbackfunction = function(param1, param2){ console.log(param1 + ' ' + param2) } myfunction = function(_function, _params){ _function(_params['firstParam'], _params['secondParam']); } 

进入主代码块,有可能传递参数

 myfunction(callbackfunction, {firstParam: 'hello', secondParam: 'good bye'}); 

这里的所有例子似乎都展示了如何声明,而不是如何使用它。 我想这也是为什么@Kiran有这么多问题。

诀窍是声明使用callback的函数:

 function doThisFirst(someParameter, myCallbackFunction) { // Do stuff first alert('Doing stuff...'); // Now call the function passed in myCallbackFunction(someParameter); } 

someParameter位可以省略,如果不需要的话。

然后您可以使用callback如下:

 doThisFirst(1, myOtherFunction1); doThisFirst(2, myOtherFunction2); function myOtherFunction1(inputParam) { alert('myOtherFunction1: ' + inputParam); } function myOtherFunction2(inputParam) { alert('myOtherFunction2: ' + inputParam); } 

请注意callback函数是如何传入的,并且没有使用引号或方括号进行声明。

  • 如果你使用doThisFirst(1, 'myOtherFunction1'); 它会失败。
  • 如果你使用doThisFirst(1, myOtherFunction3()); (我知道在这种情况下没有参数input),那么它会首先调用myOtherFunction3这样就会产生意想不到的副作用。

object[functionName]();

对象:对象的名称。

functionName:是一个我们用来调用函数的variables。

通过将用于引用函数名称的variables放在括号外的[]()内,我们可以使用variablesdynamic调用对象的函数。 点符号不起作用,因为它认为'functionName'是函数的实际名称,而不是'functionName'所保存的值。 这让我发疯了一点点,直到我遇到这个网站。 我很高兴stackoverflow.com存在<3