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