5

作为一种风格约定,当我在全局范围内访问变量时,我喜欢明确,更喜欢

window.example = "Hello";
window.alert(window.example);

不那么冗长

example = "Hello";
alert(example);

我现在有一个可以直接从浏览器使用的模块,或者,如果它们可用,可以从网络工作者那里使用。在网络工作者中,全局对象被称为self,而在浏览器中,它被称为window

window对象具有 self 属性,self.example = "Hello"因此只要没有人重新声明self(就像他们经常做的那样:var self = this),就可以在两种上下文中工作。

最好的约定是什么?

  • 使用self并希望没有人声明冲突的self.
  • 如果window已定义,则使用window,否则使用self
  • 还有什么?

考虑到这一点,我倾向于选择第二个。

4

3 回答 3

7

在全局范围内,无论是在页面中还是在 web worker 中,您都可以编写如下代码:

(function( global ) {
  // ... whatever
}( this );

然后在那个主要的外部函数中,你可以使用“global”(或称它为“window”或“self”或“whatever”),它可以在任一上下文中工作(或在 Node.js 中)。

于 2012-06-22T18:28:23.207 回答
1

我建议

var global; try { global = window } catch(e) { global = self }
于 2012-06-22T18:26:14.280 回答
0

您可以创建自己的对 window 或 self 的引用:

var my_window = window || self;
于 2012-06-22T18:27:51.037 回答