Javascript中eval的替代方案
我创建了一个属于特定类的对象Javascript中eval的替代方案,javascript,Javascript,我创建了一个属于特定类的对象 var schCom1 = Server.CreateObject(ArchiveProgID); 现在,这个对象调用动态决定的方法 fnName += "("; for (counter=0;counter<fnArgs.length;counter++) { if(counter > 0) fnName += ",
var schCom1 = Server.CreateObject(ArchiveProgID);
现在,这个对象调用动态决定的方法
fnName += "(";
for (counter=0;counter<fnArgs.length;counter++)
{
if(counter > 0)
fnName += ",";
fnName += fnArgs[counter];
}
fnName += ")";
writeComment("Ready to call method:" + "schCom1." + fnName);
// according to the type of recurrance, call method
eval("schCom1."+ fnName);
fnName+=”(”;
用于(计数器=0;计数器0)
fnName+=“,”;
fnName+=fnArgs[计数器];
}
fnName+=”;
writeComment(“准备调用方法:”+“schCom1.”+fnName);
//根据重现的类型,调用方法
eval(“schCom1.+fnName”);
这个评估电话有可能被替换吗
任何帮助都是有价值的
提前感谢。Tazim.您可以使用更简单的
schCom1[fname].apply(schCom1, fnArgs)
这将替换上面的所有代码您可以使用更简单的
schCom1[fname].apply(schCom1, fnArgs)
如果fnName确实是schCom1对象的方法的名称,那么它将替换上面的所有代码:
schCom1[fnName].apply(schCom1,fnArgs);
基本上,函数对象的apply
方法允许您调用函数并提供上下文(父对象)和参数。而apply
方法期望函数参数作为数组提供,这在本例中很有用
有关更多信息,请参阅apply
方法的文档:
还有call
方法,它执行类似的操作,但期望函数参数作为常规参数列表:
如果fnName确实是schCom1对象方法的名称:
schCom1[fnName].apply(schCom1,fnArgs);
基本上,函数对象的apply
方法允许您调用函数并提供上下文(父对象)和参数。而apply
方法期望函数参数作为数组提供,这在本例中很有用
有关更多信息,请参阅apply
方法的文档:
还有call
方法,它执行类似的操作,但期望函数参数作为常规参数列表:
对于循环,可能的重复应该使用
fnName+=”(“+fnArgs.join(“,”+”)
而不是,对于
循环,可能的重复应该使用fnName+=”(“+fnArgs.join(“,”+”)而不是。你的意思是schCom1[fnName]。应用
?除此之外,回答得很好:)@Aistina是的,谢谢!(没有看到血腥的地方)这个
可能指向一个全局变量,在这个上下文中,它实际上应该是schCom1
而不是schCom1[fnName]。应用
?除此之外,回答得很好:)@Aistina是的,谢谢!(没有看到血腥的地方)这个
可能指向一个全局变量,在这个上下文中,它应该是schCom1
而不是很多。这个答案对于理解fnname不是schCom1函数名的真实名称这一概念非常有帮助。fnName=请求(“fnName”)。它应该是schCom1[请求(“fnName”)]。apply(schCom1,fnArgs);很多。这个答案对于理解fnname不是schCom1函数名的真实名称这一概念非常有帮助。fnName=请求(“fnName”)。它应该是schCom1[请求(“fnName”)]。apply(schCom1,fnArgs);