有什麼辦法可以將函數作爲json字符串傳遞(使用JSON.stringify進行轉換),將它發送給另一個函數,解析json然後執行json中的函數?我正在使用jQuery和JavaScript。在json中傳遞函數並執行
回答
這裏的工作example
基本上,你必須要小心這樣的事情。如果您使用現有的JavaScript函數,將其轉換爲字符串並對其進行評估,則可能會遇到函數重新聲明問題。如果你簡單地把從服務器的函數字符串,要運行它,你可以做我做對的jsfiddle:
的Javascript
var myFunc = "function test() {alert('test');}";
$(document).ready(function() {
var data = new Object();
data.func = myFunc;
var jsonVal = $.toJSON(data);
var newObj = $.evalJSON(jsonVal);
eval(newObj.func);
test();
});
不,你不能這樣做。函數不能被JSON序列化。不用將對象轉換爲JSON,您可以直接將它傳遞給另一個函數,而無需調用JSON.stringify。
我有一種感覺,他的穿越線somewheres ... – jcolebrand 2010-10-16 00:09:29
JSON = JavaScript對象符號 - 當然,該函數可以被序列化並且來回傳遞。什麼是對象?幾乎所有的JS,包括的功能。當「是」是正確的答案時,當有人說「不」時有點惱火。不如說「不是我知道的」。 Bill – 2011-03-09 10:48:36
在我說smt在JavaScript中是不可能的之前,我想了十遍:)幾乎沒有人會記得JS本身的幾個「NO」。 「如何」和「爲什麼不是」是最常見的問題。 – 2014-06-15 16:42:05
是的,你可以使用它的toString()
方法將函數轉換爲字符串。
Here's an example顯示功能轉換爲字符串,並返回一個函數:
var myfunc = function() {
alert('It works!');
}
var as_string = myfunc.toString();
as_string = as_string.replace('It works', 'It really works');
var as_func = eval('(' + as_string + ')');
as_func();
這種編程方法真的打開你的想法。 – zardilior 2015-07-07 19:26:27
是的,可以。有很多方法可以做到這一點。
而且也沒有必要用「邪惡」的eval函數(請yahoogle爲什麼應該避免)這裏指出:http://javascript.about.com/library/bleval.htm
var tmpFunc = new Function(codeToRun);
tmpFunc();
無論是JSON在任何階段應該是無關的。
+1「yahoogle」。雖然Bing現在不比雅虎更受歡迎?那會是「單調」嗎?或者Scott Hanselman在演講中使用的較長的詞組「Google上的Bing」? – GregL 2012-03-09 01:53:49
我同意@GregL,但我前段時間創造了這個短語,只是不想放過它!使用「bingle」,「bingoogle」......對我來說聽起來不太合適。此外,英語中有很多詞彙和諺語是指過時的東西...... – EasierSaidThanDone 2012-03-11 21:37:05
YabingleYabingleGo – Automatico 2014-06-02 14:00:10
我創建JSONfn的一個分支,它使您能夠字符串化和分析的對象和他們的原型。在我的基本測試中,它運行良好。
//添加jQuery庫
點擊我
var jsonFun = {
fun1 : function(){
alert('Done');
}
}
$('button').click(function(){
jsonFun.fun1();
});
這是我想傳遞函數JSON的最好辦法
- 1. 傳遞並執行具有不同參數簽名的函數
- 2. 傳遞函數作爲參數並執行它
- 3. Scala傳遞函數作爲參數並有條件地執行
- 4. 在Json函數中傳遞列表
- 5. 在JSON中傳遞javascript函數
- 6. 將參數傳遞給並執行存儲在數組中的全局函數
- 7. Java - 傳遞和執行函數
- 8. 傳遞變量和執行函數
- 9. setTimeout不執行傳遞函數
- 10. 如何將任何函數作爲參數傳遞並在Swift中執行?
- 11. 傳遞並在多個json編碼的字符串上執行
- 12. 如何將值傳遞給函數並繼續執行
- 13. 條件執行後自動執行函數傳遞對象
- 14. 傳遞函數作爲參數,然後在jQuery函數中執行它
- 15. 在函數內部傳遞JSON對象
- 16. 在JavaScript函數之間傳遞Json值
- 17. JSON傳遞函數不是在jQuery的
- 18. Python中的Webdriver - 執行JavaScript文件並將參數傳遞給它的函數
- 19. Node.js - 執行傳遞給另一個函數的匿名函數
- 20. 在JavaScript函數中傳遞新行
- 21. 在scala線程內部執行傳遞的函數參數
- 22. C++傳遞函數作爲參數,在某個點執行
- 23. 從JSON執行PHP函數
- 24. Python:傳遞函數並遞歸調用
- 25. 傳遞的NSSet並在主函數值
- 26. 傳遞一個塊並執行內聯?
- 27. 在函數上執行setTimeout的問題 - 將此函數作爲參數傳遞
- 28. 在Python中傳遞函數
- 29. 在nim中傳遞函數
- 30. 推遲執行node.js中的異步消息傳遞函數
酷 - 感謝這 – amateur 2010-10-16 14:07:39