在浏览时,我经常会看一下网页的源代码,以检查某些事情是如何实现的。
我经常看到的一件事是:window.myApp.apiKey = 12345;
或window.myApp.welcomeMsg = "Hello there!";
我总是认为将属性附加到窗口对象是不好的做法(如此accepted answer中所述),但看起来myApp
被用作一种命名空间&因为它通常是品牌名称,所以它不太可能与任何东西发生冲突。
仍然 - 这样做怎么可以,有没有指标呢? (即,当我知道项目中不会使用第三个图书馆时,这可能会在现实生活中迅速改变)。
答案 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'。