这在javascript中可行吗?我试着调用名为“name”的变量的函数(对不起!)。该功能不在全球范围内。
(function () {
var myFunc, name;
myFunc = function(){
alert("Hi!");
};
name = "myFunc";
//myFunc(); // work
(name)(); // do not work
this[name](); // do not work
})();
注意:我有一个jsfiddle条目here
答案 0 :(得分:4)
“本地范围”没有对象,就像全局范围一样。您可以(并且应该)创建自己的对象来保存您的函数:
(function () {
var name = "myFunc";
var funcs = {
myFunc: function(){
alert("Hi!");
}
};
funcs[name]();
})();
答案 1 :(得分:2)
eval(name)();
eval
不是 总是 邪恶。确实有它的用途。
如果您真的不喜欢eval,请尝试将变量存储在对象中:
(function () {
var vars = {};
vars.myFunc = function(){
alert("Hi!");
};
vars.name = "myFunc";
//vars.myFunc(); // work
vars[vars.name]();
})();
答案 2 :(得分:1)
更改
myFunc = function(){
到
this.myFunc = function(){
然后这将有效:
this[name]();