gpt4 book ai didi

javascript - 空 Javascript 函数?这是什么意思?

转载 作者:数据小太阳 更新时间:2023-10-29 05:59:28 25 4
gpt4 key购买 nike

所以简短的版本,我不明白的是这行代码:

(new Function("paper", "window", "document", cd.value)).call(paper, paper);

长版,看看这些函数:

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);
}
})();
};

此代码来自 Raphael playground,这意味着它实现了 raphael 库。所以我不明白顶部的单行代码(它在 try/catch 表达式中),假设将存储在 cd.value 中的用户输入的代码复制到函数中。但这怎么可能呢?

您可以在这里访问页面:http://raphaeljs.com/playground.html

最佳答案

您了解new Function() 的作用吗?它与 eval() 类似,因为它接受一串 javascript 代码 - 它使用该字符串来定义一个函数。因此,您发布的行等同于:

(function(paper,window,document){
/* the code in the cd.value string goes here */
}).call(paper,paper);

更多信息:https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Function

关于javascript - 空 Javascript 函数?这是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3274141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com