Có cách nào để tôi có thể chuyển một hàm như là một chuỗi json (chuyển đổi với JSON.stringify) hay không, gửi nó đến hàm khác, phân tích cú pháp và sau đó thực thi hàm trong json ? Tôi đang sử dụng jquery và javascript.chức năng vượt qua trong json và thực hiện
Trả lời
Dưới đây là một công tác example
Về cơ bản, bạn phải cẩn thận với các loại điều này. Nếu bạn lấy một hàm javascript mở rộng, biến nó thành một chuỗi và đánh giá nó, bạn có thể gặp phải các vấn đề về chức năng redeclaration. Nếu bạn chỉ đơn giản là tham gia một chuỗi chức năng từ máy chủ và bạn muốn chạy nó, bạn có thể làm như tôi đã làm trên jsfiddle rằng:
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();
});
Không, bạn không thể thực hiện việc này. Các hàm không thể được tuần tự hóa JSON. Thay vì chuyển đổi đối tượng thành JSON, bạn có thể truyền trực tiếp nó sang hàm khác mà không cần gọi JSON.stringify.
Tôi có một cảm giác anh ấy đi qua một sợi dây somewheres ... – jcolebrand
JSON = Ký hiệu đối tượng JavaScript - tất nhiên chức năng có thể được tuần tự hóa và chuyển tới và fro. Một đối tượng là gì? Khá nhiều thứ trong JS, bao gồm các chức năng. Có một chút khó chịu khi ai đó nói "Không" khi "CÓ" là câu trả lời đúng. Tốt hơn để nói 'không phải là tôi biết'. Bill –
Tôi nghĩ rằng mười lần trước khi nói rằng smt là không thể trong JavaScript :) Khó có thể nhớ lại ngay cả một vài "KHÔNG" trong JS mỗi se. "CÁCH" và "TẠI SAO KHÔNG" là những câu hỏi phổ biến nhất. –
Có, bạn có thể chuyển đổi hàm thành chuỗi có phương thức toString()
.
Here's an example để hiển thị chuyển đổi một chức năng để một chuỗi và trở lại một chức năng:
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();
Cách tiếp cận lập trình này thực sự mở ra cho bạn. – zardilior
Vâng, bạn có thể. Có rất nhiều cách để làm điều đó.
Và không có nhu cầu sử dụng các "ác" chức năng eval (xin yahoogle tại sao nó nên tránh) như đã chỉ ra ở đây: http://javascript.about.com/library/bleval.htm
var tmpFunc = new Function(codeToRun);
tmpFunc();
Cho dù đó là JSON ở bất kỳ giai đoạn nên không thích hợp.
+1 cho "yahoogle". Mặc dù không phải là Bing phổ biến hơn Yahoo những ngày này? Đó có phải là "bingle" không? Hoặc cụm từ dài hơn Scott Hanselman đã sử dụng trong các bản trình bày "Google trên Bing"? – GregL
Tôi đồng ý @GregL, nhưng tôi đã đặt ra cụm từ này một thời gian trước đây và không muốn để nó đi! Sử dụng "bingle", "bingoogle" ... không có vẻ phù hợp với tôi. Plus có rất nhiều từ và tục ngữ trong ngôn ngữ tiếng Anh đề cập đến những điều đã lỗi thời ... – EasierSaidThanDone
YabingleYabingleGo – Automatico
hãy xem plugin JSONfn.
http://www.eslinstructor.net/jsonfn/
nó thực hiện chính xác những gì bạn đang yêu cầu.
-Vadim
Tôi tạo ra một ngã ba của JSONfn cho phép bạn stringify và phân tích đối tượng và nguyên mẫu của họ. Trong các thử nghiệm cơ bản của tôi nó hoạt động tốt.
// Thêm jquery thư viện
Click me
var jsonFun = {
fun1 : function(){
alert('Done');
}
}
$('button').click(function(){
jsonFun.fun1();
});
Đây là tôi đoán là cách tốt nhất để vượt qua chức năng trong JSON
- 1. đèo $ này thực hiện chức năng
- 2. PHP: Vượt qua chức năng ẩn danh làm đối số
- 3. thực hiện chức năng SIP trong IOS5
- 4. Vượt qua toán tử như tham số mẫu chức năng
- 5. Vượt qua tên biến để vẽ tiêu đề chức năng
- 6. Vượt qua con trỏ tới mẫu-chức năng như đối số chức năng?
- 7. chức năng tự thực hiện
- 8. Thực hiện chức năng Traceroute trong android
- 9. Làm thế nào để vượt qua chức năng nguyên mẫu?
- 10. vượt qua jquery json vào asp.net httphandler
- 11. Thực hiện chức năng cuối cùng
- 12. Thực hiện các chức năng song song
- 13. Vượt qua một chức năng như một cuộc tranh luận đầu tiên trong một cuộc gọi chức năng trong coffeescript
- 14. Thực hiện Chức năng Hashing MySQL
- 15. clojure chức năng trì hoãn thực hiện
- 16. jQuery - vượt qua mảng chức năng để gọi lại thành công ajax
- 17. Làm thế nào để vượt qua tham số với a href và onclick chức năng
- 18. android runonuithread() chức năng không thực hiện
- 19. C++ thực hiện bản đồ chức năng
- 20. Cách thực hiện chức năng thể dục
- 21. Thực hiện chức năng JQuery base64
- 22. làm thế nào để vượt qua danh sách như tham số trong chức năng
- 23. thực hiện chức năng trên phím enter
- 24. psycopg2 không thực hiện chức năng PostgreSQL
- 25. Chức năng thực hiện giao diện
- 26. Thực hiện chức năng sau khi người dùng di chuột qua liên kết trong 2 giây
- 27. luận Powershell đi qua thực hiện chức năng dường như không làm việc
- 28. Thực hiện chức năng JavaScript trong ứng dụng C#
- 29. Cách chức năng thư viện trong Haskell được thực hiện
- 30. Chức năng thực hiện bên trong xem máy chủ SQL
tuyệt vời - cảm ơn vì điều này – amateur