javascript equivalent of PHP's call_user_func()

前端 未结 3 1835
别那么骄傲
别那么骄傲 2021-01-01 03:09

Does anyone know if there is one?

I want to call a function using a variable name.


edit:

I posted a fiddle here with what I\'m trying to do:

3条回答
  •  暖寄归人
    2021-01-01 03:53

    If a function is defined at the global level, then it automatically becomes a child of the window object.

    Therefore you can always call window.functionName(); any place you would normally just call functionName();.

    Further, since in Javascript objects work like associative arrays, you can call any child of any object using array syntax like this: object['childName']. This includes functions, so you can do object['functionName'](); for any function which is a member of an object.

    Combining these two points together, you can call any globally defined function like so:

    window['functionName']();
    

    And since functionName in the above example is a string, you can use a variable in those brackets, which means you've got the same functionality as PHP's call_user_func().

    [EDIT]

    As I stated, this works for any object. The OP's comments state that the functions he wants to use this way are in a JQuery plug-in. They are therefore likely to be part of the JQuery object, and would normally be called like so: JQuery().functionName(); (or with the $ in place of JQuery).

    Javascript syntax allows us to use ['functionName']() in any place where we can use .functionName(), so therefore, taking the above JQuery example, we could change it to look like this:

    JQuery()['functionName']();`
    

    But this technique can be adapted for any Javascript object. Any place where you use .functionName(), it can be replaced with ['functionName']().

提交回复
热议问题