正因为如此,我们帮助理解,如果你定义 store 它window.connection
就是在 javacript 中隐式创建 window 对象的成员变量。
Javascript 允许您“即时”创建函数和成员变量,这很强大,但很容易被滥用。我个人尝试创建一些由全局命名空间中声明的目的分隔的全局对象。
您可以通过以下方式执行相同操作(如果您使用 jquery):
$().ready(function() {
var g_someGlobalState = true;
var g_someGlobalCounter = 0;
// etc.
});
我认为这通常是不好的做法,因为这些声明对于所有 javascript 库都是全局的,并且您可能会遇到命名冲突。通常最好将自定义命名空间应用于您的代码,以确保不会发生冲突。
我使用从以下位置获得的 jquery 中的辅助命名空间函数来执行此操作:http:
//elegantcode.com/2011/01/26/basic-javascript-part-8-namespaces/
$().ready(function() {
function namespace(namespaceString) {
var parts = namespaceString.split('.'),
parent = window,
currentPart = '';
for (var i = 0, length = parts.length; i < length; i++) {
currentPart = parts[i];
parent[currentPart] = parent[currentPart] || {};
parent = parent[currentPart];
}
return parent;
}
// Declare global storage
var MyAppName_GlobalSettings = namespace('MyAppName.Settings');
// Assign variables
MyAppName_GlobalSettings.connection = $.connection.hub.start();
});
现在,在这个 javascript 页面中,无论何时你想访问这个连接,你都可以简单地参考MyAppName_GlobalSettings.connection