Vì vậy, phiên bản ngắn, những gì tôi không hiểu là dòng mã này:chức năng Javascript trống? Nó có nghĩa là gì?
(new Function("paper", "window", "document", cd.value)).call(paper, paper);
Phiên bản dài, nhìn vào những chức năng:
window.onload = function() {
var paper = Raphael("canvas", 640, 480);
var btn = document.getElementById("run");
var cd = document.getElementById("code");
(btn.onclick = function() {
paper.clear();
paper.rect(0, 0, 640, 480, 10).attr({fill: "#fff", stroke: "none"});
try {
(new Function("paper", "window", "document", cd.value)).call(paper, paper);
} catch (e) {
alert(e.message || e);
}
})();
};
Mã này là từ Raphael sân chơi, mà có nghĩa là nó triển khai thư viện raphael. Vì vậy, dòng mã duy nhất ở trên cùng mà tôi không hiểu (bên trong biểu thức try/catch), giả sử sao chép mã mà người dùng nhập vào được lưu trữ bên trong cd.value vào hàm. Nhưng sao điều đó có thể xảy ra?
Bạn có thể truy cập vào trang ở đây: http://raphaeljs.com/playground.html