我有以下代码。
(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”。
为什么它找不到这个功能?
答案 0 :(得分:1)
通过致电myFunction['myInternalCallFunction']()
,您实际上正在呼叫myFunction.myInternalCallFunction()
。当然,它是未定义的,因为myInternalCallFunction
不是myFunction
的属性,它是它的私有变量。解决这个问题的一种方法,而不是将私有变量转换为属性:
(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);