如何避免在Javascript中重复命名空间

hbt*_*hbt 4 javascript namespaces

我正在研究骨干应用程序.

我在不同的文件中构建了我的模型+集合+视图.

这意味着像function() { // all my code }() 这样的解决方案 不适用

我添加了命名空间,例如 App.ModelName App.Views.ViewName etc.

当我在同一名称空间内时.我怎么能避免重复它.即当我在App.Views.ViewName中定义的函数时,如何调用ModelName

目前我不断重复完整的字符串即App.XXXX

谢谢

jfr*_*d00 5

你有几个选择:

1)在每个函数中创建一个局部变量:

App.ModelName.myFunction = function() {
    var model = App.ModelName;
    // then you can reference just model
    model.myFunction2();
}
Run Code Online (Sandbox Code Playgroud)

2)在每个文件范围中创建一个局部变量:

(function() {
    var model = App.ModelName;

    model.myFunction = function() {
        // then you can reference just model
        model.myFunction2();
    }


    // other functions here

})();
Run Code Online (Sandbox Code Playgroud)

3)使用以下值this:

App.ModelName.myFunction = function() {
    // call App.ModelName.myFunction2() if myFunction() was called normally
    this.myFunction2();   
}
Run Code Online (Sandbox Code Playgroud)