我希望通过将其分割成不同的文件,并为每个文件提供一个'sub'命名空间。Javascript命名空间
subA.js
if(typeof ex == "undefined") {
var ex = {};
}
ex.subA = function() {
//all functions of subA here
}
而同为subB的等
目前,我有1个文件,ex.js
var ex = (function() {
//private vars/funcs
return {
//public vars/funcs
}
})();
它看起来像我应该将大部分函数移动到subA.js和subB.js,但在开始时仍然包含ex.js,其中包含subA.js和subB.js a fterwards。
我有很多问题。
我很难记住我是如何制作初始命名空间文件ex.js.它看起来像匿名函数是最初使所有内容都是私有的,但我不记得为什么它需要用圆括号括起来,然后直接用
();
执行。从q1开始,我的子文件应该与ex.js的格式相同,即将anon函数包装在括号中并立即执行?
看起来子文件只能访问
ex
的公共功能,这是真的吗?如果是这样,我怎样才能让我的子文件访问私有函数呢?在我的HTML文件中,在我的document.ready函数(jQuery的),我应该初始化前变量或可我首先要
$(document).ready(function() { ex.doSomething(); ex.doSomethingElse(); }
单独调用每个函数两者有什么不同?我认为,当包含ex.js时,会立即创建一个全局变量ex(由于匿名函数会立即执行),所以我不需要在document.ready中重新定义它。
是第一个if语句在subA.js中与
var ex = ex || {};
有什么不同吗哪个更好?你用什么js代码风格标准?
如果你通读了这一切,你已经得到了赞赏,欢呼声。
你最好给你的'typeof'比较加引号,并删除'!ex':'if(typeof ex ==“undefined”)''。 –
@Rob W不要一些浏览器返回为空,而不是'undefined'?雅虎名称间隔代码使用!ex – Michael
当一个变量以前从未定义过时,'typeof'将返回'“undefined”'。但是,某些属性在执行检查时可以返回null('typeof null ===“object”')。 –