Làm cách nào để gọi một hàm JavaScript từ một chuỗi mà không cần sử dụng eval?
eval() là một hàm toàn cục trong JavaScript để đánh giá một chuỗi được chỉ định dưới dạng mã JavaScript và thực thi nó Show
Hàm eval() cũng có thể gọi hàm và nhận được kết quả như hình bên dưới
eval có thể chuyển đổi chuỗi thành đối tượng JSON
sự giới thiệuKhông nên sử dụng eval() vì nó chậm, không an toàn và khiến mã không thể đọc được và không thể bảo trì Tôi đang tìm cách chuyển đổi chuỗi thành lệnh gọi hàm mà không cần sử dụng eval. Lý do cho điều này là tôi đang sử dụng Json để lưu trữ Quy tắc định giá thẩm định và đôi khi quy tắc này phức tạp đến mức nó phải nằm trong một chức năng chuyên dụng. Vì vậy, tôi quyết định chỉ sử dụng chức năng tiêu chuẩn với hai tham số. Quy tắc sẽ giống như sau
Vì vậy, về cơ bản, thuộc tính "riskProcessFunc" sẽ có tên hàm và thay vì sử dụng định dạng này { rủi roQuy trìnhChức năng. function (riskFields) {return xyz_function(this, riskFields)} } Tôi sẽ sử dụng định dạng đơn giản hóa này để sau đó có thể dễ dàng lưu trữ trong Cơ sở dữ liệu hoặc Trang tính Excel { rủi roQuy trìnhChức năng. "xyz_function()" } Để làm cho nó rõ ràng, sử dụng mẫu dưới đây
Hãy thử thực hiện thao tác trên bằng Bảng điều khiển (ctrl-j) trong Adobe Acrobat và bạn sẽ thấy rằng "myFn2()" sẽ không hoạt động. Tốt nhất là sử dụng "eval()" Vì vậy, giới thiệu. đến bài viết trên, điểm mấu chốt là làm thế nào để sử dụng đối tượng "cửa sổ" từ Adobe LiveCycle Designer Javascript? Trong bài viết này, chúng ta sẽ gọi một hàm từ chuỗi được lưu trữ trong một biến. Có hai phương pháp để gọi một hàm từ một chuỗi được lưu trữ trong một biến.
Ghi chú. Phương thức eval() cũ hơn và không được dùng nữa. Phương pháp 1. Sử dụng đối tượng cửa sổ Đối tượng cửa sổ trong HTML 5 tham chiếu đến cửa sổ hiện tại và tất cả các mục chứa trong đó. Do đó chúng ta có thể sử dụng nó để chạy một hàm trong một chuỗi cùng với các tham số cho hàm. cú pháp window[functionName](parameters) Thí dụ. Ví dụ này giải thích cách tiếp cận được sử dụng ở trên html
eval(stringFunction)0_______21_______ > eval(stringFunction)3
eval(stringFunction)5 >
eval(stringFunction)8
eval(stringFunction)0_______6_______5 > eval(stringFunction)3
eval(stringFunction)0_______20_______6 > eval(stringFunction)3
eval(stringFunction)0_______20_______6 > eval(stringFunction)3
eval(stringFunction)0 = 1> eval(stringFunction)3
eval(stringFunction)0_______24_______3 > đầu ra
Phương pháp 2. Sử dụng phương thức eval() Phương thức khác có thể được sử dụng là phương thức eval(). Chuỗi có thể được truyền vào hàm có thể bao gồm một biểu thức JavaScript, câu lệnh hoặc một chuỗi các câu lệnh. Nó cũng có thể có các biến và thuộc tính của các đối tượng hiện có. Vấn đề duy nhất với phương pháp này là nó được coi là không an toàn và có thể không được hỗ trợ bởi các trình duyệt mới hơn. Tôi có thể sử dụng cái gì thay cho eval trong JavaScript?Một thay thế cho eval là Function() . Cũng giống như eval() , Function() nhận một biểu thức nào đó dưới dạng một chuỗi để thực thi, ngoại trừ, thay vì xuất kết quả trực tiếp, nó trả về một hàm ẩn danh cho bạn mà bạn có thể gọi. `Function() là một giải pháp thay thế nhanh hơn và an toàn hơn cho eval().
Làm cách nào để gọi hàm dựa trên chuỗi trong JavaScript?Có hai phương pháp để gọi một hàm từ một chuỗi được lưu trữ trong một biến. . Sử dụng phương pháp đối tượng cửa sổ Sử dụng phương thức eval() 3 cách gọi hàm trong JS là gì?Có thể gọi các hàm JavaScript. . Là một chức năng Là một phương pháp Là một nhà xây dựng thông qua cuộc gọi và áp dụng Tại sao không sử dụng eval trong JavaScript?Trình thông dịch JavaScript hiện đại chuyển đổi JavaScript thành mã máy. Điều này có nghĩa là mọi khái niệm về cách đặt tên biến đều bị xóa sạch. Do đó, bất kỳ việc sử dụng eval() nào cũng sẽ buộc trình duyệt thực hiện tra cứu tên biến tốn kém dài dòng để tìm ra vị trí tồn tại của biến trong mã máy và đặt giá trị của nó. |