首页 > 解决方案 > 向窗口添加属性有什么意义?

问题描述

我正在学习客户端 javascript,我注意到在一些教程中假设我们正在制作游戏,即使使用了 webpack bundler,它们仍然可以:

// game.js
function Game() {
  // ... some code
}

module.exports = Game;

// index.js

const Game = require("./game.js");
window.Game = Game;

将这样的构造函数添加到窗口有什么意义?我们总是可以在任何地方使用它们并使用 webpack 来捆绑它们,对吗?

标签: javascriptbrowser

解决方案


教程会这样做,因为 ES6 模块脚本有一个自己的(“封闭的”)变量范围,它不允许在它之外使用它的对象。有关此主题的更多信息,请参阅问题ES6 模块范围

随着实例window.Game = Game;在任何地方都可以访问,这对于通过浏览器控制台Game进行调试非常有用,但您不应该在已部署的软件构建中执行此操作。


推荐阅读