使用字符串调用javascript函数
Calling a javascript function with a string?
我有一个函数:
var greet = function (name) {
console.log("Hi " + name);
}
如果我有一个字符串"greet('eric'(",是否可以将其转换为传递"eric"作为参数的函数调用?
eval((是你的朋友!http://www.w3schools.com/jsref/jsref_eval.asp
你、我、他、她和他们都讨厌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')");
将窗口引用替换为任意内容。
我不确定我是否正确理解了你的问题,但你在寻找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:小心使用eval
底线2:避免这样的构造。
只是为了确保你有所有的可能性@你的处置:setTimeout(greetstr,0);
Mmm,在那里的某个地方有一个eval
;(
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 正在全局范围中查找JavaScript函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 如何调用这个匿名 JavaScript 函数
- 通过Ajax将JavaScript函数传递给PHP文件
- 在javascript函数中设置全局变量
- 如何在执行此特定onclick事件时执行JavaScript函数
- 使用javascript函数在页面初始化后加载jquery
- javascript函数同步
- 如何将一个JavaScript函数回调为多个函数
- 在javascript函数中使用php变量
- 代码背后调用一个JavaScript函数的按钮点击-C#
- 将JavaScript函数与HTML分离
- 组合两个javascript函数
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- javascript函数内部的代码用逗号而不是分号分隔
- href属性内的javascript函数
- 使用html表单中的参数调用JavaScript函数
- 分析Javascript函数中的多个对象
- javascript函数的:和=之间的区别