gpt4 book ai didi

javascript - JS 揭示模块模式 : Params that shouldn't be used by usercode

转载 作者:行者123 更新时间:2023-12-01 04:06:39 24 4
gpt4 key购买 nike

我有一个用揭示模块模式编写的模块。它包含一个用作重载的子模块。主模块的一些函数具有不应与用户代码一起使用的参数 - 只能通过子模块使用。如何从子模块访问参数,但使它们不可用于“外部用户代码”?我应该为此再制作一层吗?

var someNamespace = someNamespace || {};

someNamespace.someModule = (function () {

// _customSiteUrl, _customToken shouldn't be available via usercode
function create(listName, data, _customSiteUrl, _customToken) {
...
}
var XS = (function () {
return {
createXS: function (siteUrl, listName, data) {
...
create(listName, data, siteUrl, token);
}
}
})();

return {
create: create,
XS: XS,
...
}
})();

someNamespace.someModule.create("hi", {}, "https://...", "someHash"); //Should not be possible!!
someNamespace.someModule.create("hi", {}); //Should be used

最佳答案

您可以在 .someModule 中添加另一个“层”,并在本地声明任何用户无法访问的变量,并将返回的 create: 属性更改为这一层,而不是基本功能。

您必须记住,您可以根据需要创建任意数量的“重载”,但它们都将保留您在返回的“重载”中声明的相同参数。您在重载中传递给基本函数 (create) 的内容完全取决于您并且完全私有(private)。

someNamespace.someModule = (function () {

// _customSiteUrl, _customToken shouldn't be available via usercode
function create(listName, data, _customSiteUrl, _customToken) {
...
}

function userAccessibleCreate () {
return create(parameters, you, want);
};
var XS = (function () {
return {
createXS: function (siteUrl, listName, data) {
...
create(listName, data, siteUrl, token);
}
}
})();

return {
create: userAccessibleCreate,
XS: XS,
...
}
})();

现在,用户只能执行someNamespace.someModule.create("hi", {});

关于javascript - JS 揭示模块模式 : Params that shouldn't be used by usercode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41761833/

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