Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用字符串调用方法_Javascript - Fatal编程技术网

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获得该对象。我猜您必须将引用从全局范围链接到正确的范围。