gpt4 book ai didi

javascript - 沙盒javascript模块

转载 作者:行者123 更新时间:2023-11-29 10:54:43 27 4
gpt4 key购买 nike

是否可以通过 DOM 操作将 javascript 模块沙盒化?例如

var Core = { 
register: function(config){config.init()},
publicApi: {
msgbox: function(msg){alert(msg)}
}
}
Core.register({
name: 'testmodule',
init: function(){
/* from there i want to see only function defined in Core.publicApi, no jQuery direct access, no DOM */
}
});

最佳答案

嗯,有点:您可以将函数沙盒化,但它的调用者也将被沙盒化。这意味着即使是 Core.publicApi 中的内容也无法访问 document 等。或者,至少,Javascript 中没有允许这种桥接的防弹沙盒。

您可以通过临时覆盖 window 变量来削弱可用的内容:

var window = {"Core": Core};

但是这样没有全局变量(即使是alert)将存在于被调用者。这很可能会破坏您的 API。

您可以将另一个成员(如 _unsandboxed 或其他)添加到新的 window 变量中,以允许您的 API 访问这些成员。但是,正如我所说,它不是万无一失的,因为沙盒函数仍然可以访问 _unsandboxed

关于javascript - 沙盒javascript模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2392834/

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