如何在JavaScript中消除函数参数privateArgument的外部访问权限
如何限制回调仅访问转换后的值,屏蔽原函数参数?
我正在开发一个大型库,希望尽可能减少代码冲突。现有如下自执行函数:
((privateArgument) => { var transformed = privateArgument.someProperty; userCallback(); // 此处应仅能访问transformed })({someProperty: 'Hello, world!'});
需要说明的是,我已尽可能简化示例以阐明意图。实际上,我无法控制传入函数的值({someProperty: 'Hello, world!'})。
以下是userCallback的示例:
() => { console.log(transformed); // 可在此自由使用 console.log(privateArgument); // 遗憾的是也能被访问 }
我已尝试以下方案:
- 设置
privateArgument = undefined:破坏了对transformed的访问,且不会抛出原生"undefined"错误 - 通过定义新的
let privateArgument并用{}限定userCallback作用域来覆盖privateArgument:报错,提示无法重定义 - 将
transformed作为参数传入userCallback:无法解决问题
请注意,我专门询问的是参数问题,而非var、let这类常规变量。我知道常规变量的相关问题已在其他问答中解决,但那些答案对当前问题无效。
若有人知晓可利用的作用域机制,或能彻底移除privateArgument(使其抛出原生错误且可在userCallback中重新声明)的方法,我将不胜感激。
内容的提问来源于stack exchange,提问作者Ood
相关产品推荐
相关产品推荐

