Jquery plugins 将函数传递给另一个函数并按名称调用 ... 函数helloworld(){alert('helloworld');} ...

Jquery plugins 将函数传递给另一个函数并按名称调用 ... 函数helloworld(){alert('helloworld');} ...,jquery-plugins,jquery,Jquery Plugins,Jquery,问题,;如何生成回调以传递另一个函数 <a id="aHw" href="#" callbackName="helloworld">test</a> ... <script> function helloworld() { alert('hello world'); } </script> ... ... var cbName=$('#aHw').attr('callbackName'); foo(

问题,;如何生成回调以传递另一个函数

<a id="aHw" href="#" callbackName="helloworld">test</a>
    ...
    <script>
      function helloworld() { alert('hello world'); }
    </script>
     ...

...
var cbName=$('#aHw').attr('callbackName');
foo(passfunction)//怎样???
...
函数foo(回调)
{
callBack();//呼叫hello world。
}

提前感谢。

JavaScript中的函数只是一个对象

这个问题对我来说并没有什么意义,但请考虑以下问题:

    <script>
     ...
    var cbName = $('#aHw').attr('callbackName');

    foo( passfunction );  //How???
    ...
   </script>

    <script> 
    function foo(callBack)
    {
       callBack(); // call hello world.
    }
   </script>

愉快的编码。

JavaScript中的函数只是一个对象

function fn1 () {
    alert("fn1")
}

function doIt(cb) {
   cb()
}

// direct -- to show point in general
// fn1 evaluates to the function-object, which is then passed
doIt(fn1)

// lookups up fn1 by name, then passes that function-object
// the value "fn1" can be any arbitrary string, such as that which
// was stored in the attr:
//   e.g. doIt(window[cbName])
doIt(window["fn1"])

// anon function to iterate sameness
// the anon function returns a new function-object
doIt(function () { alert("anon") })
这个问题对我来说并没有什么意义,但请考虑以下问题:

    <script>
     ...
    var cbName = $('#aHw').attr('callbackName');

    foo( passfunction );  //How???
    ...
   </script>

    <script> 
    function foo(callBack)
    {
       callBack(); // call hello world.
    }
   </script>
快乐编码

function fn1 () {
    alert("fn1")
}

function doIt(cb) {
   cb()
}

// direct -- to show point in general
// fn1 evaluates to the function-object, which is then passed
doIt(fn1)

// lookups up fn1 by name, then passes that function-object
// the value "fn1" can be any arbitrary string, such as that which
// was stored in the attr:
//   e.g. doIt(window[cbName])
doIt(window["fn1"])

// anon function to iterate sameness
// the anon function returns a new function-object
doIt(function () { alert("anon") })
我想这就是你想要的

但是如果它在浏览器中,并且您知道回调是一个全局对象,那么您可以这样做

foo( Function('return ' + cbName)() )
我想这就是你想要的

但是如果它在浏览器中,并且您知道回调是一个全局对象,那么您可以这样做

foo( Function('return ' + cbName)() )

如果没有其他帮助,
eval()
将:

foo(window[cbName])

如果没有其他帮助,
eval()
将:

foo(window[cbName])

如果您知道函数的定义位置(例如
窗口
,或自定义名称空间),则可以通过字符串名称调用它。否则,您将不得不
评估
(坏主意)。另外,使用
数据属性

function foo( callBack ) {
 eval( callBack + '()' );
}

如果您知道函数的定义位置(例如
窗口
,或自定义名称空间),则可以通过字符串名称调用它。否则,您将不得不
评估
(坏主意)。另外,使用
数据属性

function foo( callBack ) {
 eval( callBack + '()' );
}

嗯。因此,要让锚点在鼠标上方执行某些操作,您可以使用以下代码:

// invoke runs a function by name in the provided context, or window
function invoke(cbname, context){
    return (context || window)[cbname].call();
}
// get attribute through the data method
var funcName = $('a').data('callback');

// run callback
var result = invoke(funcName);
或者,您可以将匿名函数传递给上述用户:

function callSomeFunction( fn )
{
    fn();
}

callSomeFunction( alert );
如果您试图将函数名作为字符串传递(这是一个根本不好的主意,也是一个可怕的风险,很难调试,不要这样做),那么您可以使用eval:

 callSomeFunction( function(){ alert( "Finally! A message!" ); } );
或者,您可能能够逃脱:

function callNamedFunction( fn )
{
   eval(fn)()
}

嗯。因此,要让锚点在鼠标上方执行某些操作,您可以使用以下代码:

// invoke runs a function by name in the provided context, or window
function invoke(cbname, context){
    return (context || window)[cbname].call();
}
// get attribute through the data method
var funcName = $('a').data('callback');

// run callback
var result = invoke(funcName);
或者,您可以将匿名函数传递给上述用户:

function callSomeFunction( fn )
{
    fn();
}

callSomeFunction( alert );
如果您试图将函数名作为字符串传递(这是一个根本不好的主意,也是一个可怕的风险,很难调试,不要这样做),那么您可以使用eval:

 callSomeFunction( function(){ alert( "Finally! A message!" ); } );
或者,您可能能够逃脱:

function callNamedFunction( fn )
{
   eval(fn)()
}