用字符串调用javascript函数?
我有一个功能:用字符串调用javascript函数?,javascript,Javascript,我有一个功能: var greet = function (name) { console.log("Hi " + name); } 如果我有一个字符串“greet('eric')”,是否可以将其转换为传递“eric”作为参数的函数调用?eval()是您的朋友! 我不确定我是否正确理解了您的问题,但您正在寻找函数吗 eval("greet('eric')"); 这和打字一样容易 eval("greet('eric')"); 无eval var greet = function (n
var greet = function (name) {
console.log("Hi " + name);
}
如果我有一个字符串“greet('eric')”,是否可以将其转换为传递“eric”作为参数的函数调用?eval()是您的朋友!
我不确定我是否正确理解了您的问题,但您正在寻找函数吗
eval("greet('eric')");
这和打字一样容易
eval("greet('eric')");
无
eval
var greet = function (name) {
console.log("Hi " + name);
},
greetstr = 'greet("Eric")';
var greeter = greetstr.split('("');
window[greeter[0]]( greeter[1].replace(/\)|"/g,'') );
底线1:底线2:避免这样的结构 只是为了确保你有所有的可能性@你的处置:
setTimeout(greetstr,0)代码>
嗯,那里某处有一个eval
) 你、我、他、她和他们都讨厌eval。总有别的办法
callMethod = function(def) {
//all the variables are function references
var approvedMethods = {greet: greet, love: love, marry: marry, murder: murder, suicide: suicide},
split = def.split(/\(/); //split[0] contains function name, split[1] contains (unsplit) parameters
//replace last ) and all possible string detonators left-over
split[1] = split[1].replace(/\)$/, '').replace(/[\'\"]/g, '').split(','); //contains list of params
if (!approvedMethods[split[0]])
return 'No such function.';
approvedMethods[split[0]].apply(window, split[1]);
}
//Called like this:
callMethod("greet('eric')");
将窗口引用替换为任何引用。Oh完全忘记了eval()。“这不是反过来说的吗,它是邪恶的吗?”翁·艾瓦尔说,只有当你误用它时,它才是邪恶的。一千个尖叫的处女撕扯着他们的肉体的呼唤伴随着你的回答。如今,抨击学校似乎很流行。他们在许多方面可能是错误的,但在他们的时代(w3schools始于1999年),他们是许多人的重要信息来源。也许有一天他们会赶上的。我想eval()在这种情况下确实是我的朋友=)