什么时候可以将属性附加到窗口?

时间:2015-01-22 18:43:04

标签: javascript

在浏览时,我经常会看一下网页的源代码,以检查某些事情是如何实现的。

我经常看到的一件事是:window.myApp.apiKey = 12345;window.myApp.welcomeMsg = "Hello there!";

我总是认为将属性附加到窗口对象是不好的做法(如此accepted answer中所述),但看起来myApp被用作一种命名空间&因为它通常是品牌名称,所以它不太可能与任何东西发生冲突。

仍然 - 这样做怎么可以,有没有指标呢? (即,当我知道项目中不会使用第三个图书馆时,这可能会在现实生活中迅速改变)。

1 个答案:

答案 0 :(得分:1)

一般情况下,我会使用以下方法......

if (typeof window['myApp']=='undefined') {alert('its okay.');}
else {alert('Error: native API added, have AJAX message server, email you.');}

...当然,你是否应该这样做是主观的,我个人使用......

var option = new function() {this.name = '';}
option.whatever = 'this string';
alert(option.whatever);//'this string'

...但是我可以将其重命名并在将来修改它,就像我对所有代码一样。

正如IngoBürk在评论中指出的那样,最终所有东西都是window对象的对象子,这些对象之间的唯一区别是上下文和 你可以与之交互它们(例如,您无法删除var定义的对象,但定义为delete window.myObject时可以window.myObject = 1;

有关更深入的信息,请参阅the answer for 'Javascript global variables'