过多使用Javascript窗口对象

问题描述 投票:0回答:1

我正在开发一个可以在浏览器中工作的javascript SDK,这里他们使用

window.someVariableName
来存储数据。我们希望该变量可以在 JavaScript 代码中的任何位置访问,但这会将内部变量暴露给用户,这是不安全的。 有没有标准的方法来处理这个问题?

我在 javascript 中创建了一个单例类,并使用 getter 和 setter 添加了该类中的所有变量。

javascript typescript browser sdk
1个回答
0
投票

几年前,在我们使用捆绑器之前,这种情况很常见。你曾经像这样导入js文件:

<script type="text/javascript" src="somelib.js"></script>

然后该文件将声明一些全局变量。今天,在 ES 模块中,这将是:

import "somelib"

常见模式是使用 IIFE(立即调用函数表达式):

((global: any) => {

   // Everything here is private
   const s = "hello world!";
   const doSomething = () => console.log(s);

   // Expose only what you want to expose
   global.Something = {
      doSomething
   };

})(window);

然后您可以按如下方式访问:

windows.Something.doSomething(); // "hello world!"
windows.s // undefined
© www.soinside.com 2019 - 2024. All rights reserved.