0

我有下面的代码。

(function($) {

    var myFunction = function(element) {

        var myCallerFunction = function() {
            var functionName = 'myInternalCallFunction';
            myFunction[functionName]();
            console.log(2);

        }

        var myInternalCallFunction = function() {

            console.log(1);
        }

        myCallerFunction();

    }

    $.fn.myfunction = function(options) {
        var func = new myFunction();
    }

})(jQuery);

在 myCallerFunction 中,我创建了一个变量,其中包含我要调用的函数名称。然后我尝试调用它,但是它返回找不到该函数。它发现命名空间 myFunction 没问题,就好像我改变了一样:

myFunction[functionName]();

myFunctionTest[functionName]();

它返回它找不到“myFunctionTest”而不是找不到“myInterncalCallFunction”。

任何想法为什么它找不到该功能?

4

1 回答 1

1

By calling myFunction['myInternalCallFunction']() you are actually calling myFunction.myInternalCallFunction(). Of course, it is undefined since myInternalCallFunction is not a property of myFunction, it is its private variable. One way of solving this while not turning private variables to properties:

(function($) {

    var myFunction = function(element) {
        var cache = {};
        var myCallerFunction = function() {
            var functionName = 'myInternalCallFunction';
            cache[functionName]();
            console.log(2);

        }

        cache.myInternalCallFunction = function() {

            console.log(1);
        }

        myCallerFunction();

    }

    $.fn.myfunction = function(options) {
        var func = new myFunction();
    }

})(jQuery);
于 2012-11-08T22:57:33.820 回答