Gon*_*nki 8 javascript function dynamic object
当其名称在变量中时,我在调用另一个函数内部的函数时遇到困难:
var obj = {}
obj.f = function() {
var inner = {
a: function() {
function b() {
alert('got it!');
}
b(); // WORKS AS EXPECTED
x = 'b';
[x](); // DOESN'T WORK, NEITHER this[x]() window[x](), etc.
}
}
inner.a();
}
obj.f();
Run Code Online (Sandbox Code Playgroud)
我尝试[x]()使用不同的范围路径作为前缀,但到目前为止还没有成功.搜索现有答案并未发现任何问题.它适用于this[x]()if b()直接放在对象内部.我想保留b()作为函数内部function a()因为变量范围function a(),否则我需要传递许多参数b().
////重复问题:Quentin在这个帖子imo中提供了一个更优雅的答案.
Que*_*tin 18
使用与变量名称匹配的字符串,没有合理的方法来访问任意变量.(对于一个非常糟糕的方法,请参阅eval).
[x]();//什么都不行
您正在尝试将数组作为函数调用
既不
this[x]()
该函数不是inner对象的属性.
window[x]()等
由于它不是全局的,因此它也不是窗口对象的属性.
如果需要根据字符串变量的值调用函数,则在对象中组织函数并从中访问它们.
function b() {
alert('got it!');
}
var myFunctions = {
b: b
};
x = 'b';
myFunctions[x]();
Run Code Online (Sandbox Code Playgroud)