我似乎在JavaScript中遇到了名称间距问题。
我已将javascript objects
分隔为单独的文件。
每个文件都以命名空间定义开头:
var MySystem = MySystem || {};
如果我包含对象,该对象调用文件中包含的对象的某些方法 - 我得到TypeError,说明给定的对象不存在。
我遇到的问题示例:
文件1 Url.js(首先包含在html文档中):
var MySystem = MySystem || {};
MySystem.Url = {
objHelper : MySystem.Helper,
init : function() {
"use strict"
if (this.objHelper.isEmpty('string')) {
throw new Error('The string is empty');
}
}
}
文件2 Helper.js(在html文档中包含第二位):
var MySystem = MySystem || {};
MySystem.Helper = {
isEmpty : function(thisValue) {
"use strict"
return (
typeof thisValue === 'undefined' ||
thisValue === false ||
thisValue === null ||
thisValue === ''
);
}
}
使用MySystem.Url.init();
调用时,我得到:
TypeError: this.objHelper is undefined
if (this.objHelper.isEmpty('string')) {
当我颠倒包含文件的顺序时 - 一切正常。
这显然是非常简单的示例,但我的系统包含更多objects
- 所有这些都在他们自己的单独文件中。
这个问题的最佳解决方法是什么?