Có cách nào để chỉ định đối tượng nào cần sử dụng cho toàn cầu khi gọi eval()
?Sử dụng eval() với tuỳ chỉnh toàn cầu
(Tôi không yêu cầu thế nào để làm eval toàn cầu().)
này không hoạt động nhưng điều này cho thấy những gì tôi muốn:
var pseudoGlobal = {};
eval("x = 12", pseudoGlobal);
pseudoGlobal.x; // 12
Điểm có ích là các ràng buộc toàn cầu thực sự là không bị ảnh hưởng bởi khai báo biến tiềm ẩn (tức là không có var từ khóa) trong mã eval() 'ed.
Đối với eval.call(pseudoGlobal, "x=12")
hoặc eval.apply(pseudoGlobal, ["x=12"])
, một số thông dịch viên sẽ không cho phép.
Mục đích là tạo một môi trường thực thi được cô lập/kiểm soát/bảo mật trong chính Javascript. – gawi