簡體   English   中英

如何在JavaScript中使用參數調用匿名函數(存儲在字符串中)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM