Javascript 使用字符串调用方法
我有一个这样的目标:Javascript 使用字符串调用方法,javascript,Javascript,我有一个这样的目标: var x = { "fx": function() {...} } 我有对象的名称(y=“x”)和函数(z=“fx”)并将它们作为字符串 我知道我可以通过以下方法或类似方法使用eval调用该函数: eval(y.z) 但是,我希望避免使用eval来实现这一点。我知道applyprototype方法接受一个函数并将其应用于一个对象,但是搜索函数引用是不可能的,因为函数包含在对象中 我知道这不是一个新问题,因此必须有一个解决方案,但我找不到它。任何帮助都将不胜感激
var x = {
"fx": function() {...}
}
我有对象的名称(y=“x”
)和函数(z=“fx”
)并将它们作为字符串
我知道我可以通过以下方法或类似方法使用eval调用该函数:
eval(y.z)
但是,我希望避免使用eval来实现这一点。我知道apply
prototype方法接受一个函数并将其应用于一个对象,但是搜索函数引用是不可能的,因为函数包含在对象中
我知道这不是一个新问题,因此必须有一个解决方案,但我找不到它。任何帮助都将不胜感激。您可以使用
x[y]()
用变量调用函数我理解的是y和z是一些变量,你想用这些变量调用y对象的z方法 它可以通过多种方式实现。例如:
(function () {
x = {
"fx": function () {
alert("Hey!");
}
}
y = "x";
z = "fx";
this[y][z]();
}());
为什么分配
y=“x”
?你可以使用x[z]()
,eval
不好,应该避免,我只是用它来表示对象名是一个字符串;我没有以任何方式或形式使用eval。这是正确的,谢谢。我想提醒未来的读者,只有在全局范围内定义了正确的对象时,才可以使用window[x]
@Saikyr获得该对象。我猜您必须将引用从全局范围链接到正确的范围。