[英]How can I call an anonymous function (stored in string) with an argument in JavaScript?
我在JavaScript中遇到以下情況:
<a onclick="handleClick(this, {onSuccess : 'function() { alert(\'test\') }'});">Click</a>
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
}
您真的不需要這樣做。 我的意思是將函數作為字符串傳遞。 JavaScript函數是一流的對象,可以直接傳遞:
<a onclick="handleClick(this, {onSuccess : function(obj) { alert(obj) }}, 'test');">
Click
</a>
...
function handleClick(element, options, otherObject) {
options.onSuccess(otherObject); // works...
}
但是,如果您真的想按照自己的方式做,那么cloudhead的解決方案就可以了。
嘗試這個:
options.onSuccess = eval('function() {alert(\'test\')}');
options.onSuccess(otherObject);
當我向虛擬變量添加一個assignmnet時,它僅對我的FF有效:
options.onSuccess = 'dummyVariable = function(x) {alert("x=" + x);}';
f = eval(options.onSuccess);
f(5);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.