将Javascript命名空间设置为Window:不好主意?还是很棒?

Pla*_*eon 5 javascript createjs

我在EaselJS库的示例中讨论了这段代码 - 它的作用是将整个createjs库的命名空间分配给"window".

<script>
var createjs = window;
</script>
Run Code Online (Sandbox Code Playgroud)

我的问题是:设置一个库的命名空间窗口是一个非常愚蠢的想法?是不是通过使所有命名空间变量突然全局范围来摆脱使用命名空间的全部意义?

我能看到的唯一优势是让你为你的对象编写更短的构造函数.例如输入:

 stage = new Stage(canvas);
Run Code Online (Sandbox Code Playgroud)

代替:

 stage = new  createjs.Stage(canvas);
Run Code Online (Sandbox Code Playgroud)

这是一个坏主意,还是某种程度上很棒,或者只是无害的古怪?

Lan*_*nny 5

这样设置的原因是为了保持与以前版本没有命名空间的向后兼容性.这允许开发人员在添加时升级到最新版本,而无需重构所有代码.


rai*_*7ow 2

对我来说,一个好主意应该被很多人积极使用。这正是为什么我认为这个技巧是一个坏主意:简而言之,它实际上击败了命名空间的想法:如果许多人(=其他流行 JS 库的作者)开始使用作为window他们的命名空间根,方法覆盖的危害方法覆盖另一种方法将否定这种方法的任何可能的优点。