js 虽然不像其他后台语音那样有命名空间的内置支持, 但也可以通过类似的效果和闭包来实现命名空间.
先说大致有几种简单实现的方式.
1. 单一全局变量
- var myApp = (function(){
- function method1() {
- //...
- },
- return {
- //...
- method1 : method1
- };
- })();
2. 前缀命名空间
- var myApp_propertyA = {};
- var myApp_propertyB = {};
- var myApp_method1 = function() {//...} [/code]
3. 对象字面量表示法
- var myApp = {
- /.../
- models : {},
- views : {},
- collections : {}
- };
- myApp.method1 = function() {//..}[/code]
4. 嵌套命名空间
- var myApp = myApp || {};
- myApp.models = myApp.models || {};
- myApp.models.modelUtil = myApp.models.modelUtil || {};
5. 函数自执行 (立即调用表达式)
- (function(namespace) {
- namespace.propertyA = "you...";
- namespace.method1 = function() {//...}
- })(window.myApp = window.myApp || {});
6. 命名空间注入
- var myApp = myApp || {};
- myApp.utils = myApp.utils || {};
- (function(){
- this.propertyA = "you...";
- this.method1 = function() {//...}
- }).apply(myApp.utils);
来源: http://www.qdfuns.com/article/17398/6ee32b97f3daee3dd07cb3fb36dd8e17.html