Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_String_Object - Fatal编程技术网

从字符串调用Javascript函数

从字符串调用Javascript函数,javascript,string,object,Javascript,String,Object,是否可以从字符串调用javascript中的函数,其中函数位于对象中 e、 g:从下面的对象调用“main.object.doSomething()”(注意它是一个字符串) window.main = { object: { doSomething: function(){ alert('Called'); } } } ---更新--- …不使用eval() 使用eval(表达式或函数) 请在下面的文章中阅读 或使用eval

是否可以从字符串调用javascript中的函数,其中函数位于对象中

e、 g:从下面的对象调用“main.object.doSomething()”(注意它是一个字符串)

window.main = {
    object: {
        doSomething: function(){
            alert('Called');
       }
    }
}
---更新---

…不使用eval()

使用eval(表达式或函数)

请在下面的文章中阅读 或使用eval(表达式或函数)

请在下面的文章中阅读
或者

您可以使用
eval
,因此:

eval("main.object.doSomething()");

但是
eval
是邪恶的-尽量避免它。

你可以使用
eval
,因此:

eval("main.object.doSomething()");

但是
eval
是邪恶的-尽量避免它。

假设您的字符串如下:

var funcString = "window.main = {
    object: {
        doSomething: function(){
            alert('Called');
       }
    }
}";
eval(funcString);
如果你已经在页面中定义了你的函数,你可以用两种不同的方式调用它,使用eval(没有js专家会提供使用它的功能,你应该在没有其他选项的情况下使用它):

另一种方法是使用匿名函数:

Function("main.object.doSomething();")();

假设您的字符串如下所示:

var funcString = "window.main = {
    object: {
        doSomething: function(){
            alert('Called');
       }
    }
}";
eval(funcString);
如果你已经在页面中定义了你的函数,你可以用两种不同的方式调用它,使用eval(没有js专家会提供使用它的功能,你应该在没有其他选项的情况下使用它):

另一种方法是使用匿名函数:

Function("main.object.doSomething();")();

不要使用
eval
有,而且大多数时候绝对没有理由这么做。相反,您可以使用字符串属性查找语法来获取要查找的方法:
main.object.doSomething()
相当于
main.object['doSomething']()
。例如,如果要基于字符串调用函数,可以执行以下操作:

var methodToCall = 'doSomething';
main.object[methodToCall]();

如果将括号放在属性查找之后看起来很奇怪,您也可以执行
main.object[methodToCall].call(null)
不要使用
eval
有,而且大多数时候绝对没有理由这么做。相反,您可以使用字符串属性查找语法来获取要查找的方法:
main.object.doSomething()
相当于
main.object['doSomething']()
。例如,如果要基于字符串调用函数,可以执行以下操作:

var methodToCall = 'doSomething';
main.object[methodToCall]();
如果将括号放在属性查找之后看起来很奇怪,您也可以执行
main.object[methodToCall].call(null)
window.main={
对象:{
doSomething:function(){
警报(“被呼叫”);
}
}
}
函数callFromString(aString){
var parts=aString.split(“.”);
var obj=窗口;
对于(变量i=0;i

window.main={
对象:{
doSomething:function(){
警报(“被呼叫”);
}
}
}
函数callFromString(aString){
var parts=aString.split(“.”);
var obj=窗口;
对于(变量i=0;i

我正考虑根据@OverlappingElvis的想法做类似的事情。谢天谢地,洛蒂正考虑用@OverlappingElvis的主意做这样的事情。谢谢