JQuery check if variable is function

This question already has an answer here:

  • How to execute a JavaScript function when I have its name as a string 29 answers

  • In your example, to get a reference to the testFunction if it is in scope, you can use eval . Yes, I said it, eval , so you have to know that the string could be manipulated by the user to run malicious code if you don't sanitize it for function names;

    var testController = function() {
      alert('123');
    }
    
    $(function() {
      $('[mfour]').each(function(e, t) {
        var a = eval($(t).attr('mfour'));
        console.log($.isFunction(testController));
        console.log($.isFunction(a));
      })
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div mfour="testController">Hello</div>

    Try using window[varname] - assuming the function is in global scope

    like this

    DEMO

    var testController = function() {
        alert('123');
    }
    
    $(function() {
        $('[mfour]').each(function(e, t) {
            var a = $(t).attr('mfour');
            console.log($.isFunction(testController));
            console.log($.isFunction(window[a]));
            console.log(typeof window[a] === "function");
        })
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <div mfour="testController">Hello</div>

    To check if the variable is a function just add a check

    typeof variableName
    

    It will return the type of variable.

    Dude..

    If possible, add your function to an object. Like below

    var obj = {
        testController: function(){
           alert('123');
        }
    };
    
        $(function() {
            $('[mfour]').each(function(e, t) {
                var a = $(t).attr('mfour');
                console.log($.isFunction(obj[a]));
            })
        });
    
    链接地址: http://www.djcxy.com/p/94840.html

    上一篇: 这种定义JS对象的方式有什么用处吗?

    下一篇: JQuery检查变量是否是函数