我在javascript中有一个函数
function add(v1,v2){
var add=v1+v2;
}
Run Code Online (Sandbox Code Playgroud)
现在我调用此函数如下 -
write.out(var param="1,2";);
write.out(window[add](param););
Run Code Online (Sandbox Code Playgroud)
使用上面的调用,它不起作用.它的作用是将完整的字符串"1,2"作为函数的第一个参数(v1)的值.
如果我按以下方式调用该函数,它的工作原理 -
write.out(var param1="1";);
write.out(var param2="2";);
write.out(window[add](param1,param2););
Run Code Online (Sandbox Code Playgroud)
我想用第一种方式实现它,我可以将参数作为逗号分隔的参数字符串发送.
有人可以帮我解决这个问题吗?
谢谢!!!
您可以使用ECMA脚本.apply(),它调用函数并接受一组参数.
window['add'].apply(null, param.split(','));
Run Code Online (Sandbox Code Playgroud)
这样,我们执行add函数,将其上下文设置为null(如果需要,也可以更改)并传入两个参数.既然我们需要一个Array,我们split()之前调用字符串.
所以基本上,上面的行是一样的
add(1,2);
Run Code Online (Sandbox Code Playgroud)
由于你在全局context(window)中拥有该函数,我们甚至不需要明确地编写它.
add.apply(null, param.split(','));
Run Code Online (Sandbox Code Playgroud)
会没事的.
| 归档时间: |
|
| 查看次数: |
2771 次 |
| 最近记录: |