我在JavaScript中有以下情况:
<a onclick="handleClick(this, {onSuccess : 'function() { alert(\'test\') }'});">Click</a>
Run Code Online (Sandbox Code Playgroud)
该handleClick函数接收第二个参数作为对象,其onSuccess属性包含函数定义...
如何调用onSuccess函数(存储为字符串) - 并传递otherObject给该函数?(jQuery解决方案也很好......)?
这是我到目前为止所尝试的......
function handleClick(element, options, otherObject) {
options.onSuccess = 'function() {alert(\'test\')}';
options.onSuccess(otherObject); //DOES NOT WORK
eval(options.onSuccess)(otherObject); //DOES NOT WORK
}
Run Code Online (Sandbox Code Playgroud)
你真的不需要这样做.我的意思是将函数作为字符串传递.JavaScript函数是第一类对象,可以直接传递:
<a onclick="handleClick(this, {onSuccess : function(obj) { alert(obj) }}, 'test');">
Click
</a>
Run Code Online (Sandbox Code Playgroud)
...
function handleClick(element, options, otherObject) {
options.onSuccess(otherObject); // works...
}
Run Code Online (Sandbox Code Playgroud)
但如果你真的想按照自己的方式去做,那么cloudhead的解决方案就可以了.