JavaScript函数 - 全局命名空间

时间:2013-11-07 11:20:54

标签: javascript backbone.js javascript-namespaces

在Javascript中,存在一个继承Backbone Model

的函数
window.MyModel = Backbone.Model.extend({ .. .. });
window.MyCollection = Backbone.Collection.extend({ .. .. });

在另一个JS文件中,我们以

的形式访问此函数
var MyModelInstance = new window.MyModel();

要求是,所有功能都需要以特定的全局命名空间(例如,公司名称“Google”)为前缀,而不是通用关键字“window”。我们怎样才能实现它?

我尝试了以下内容,但没有成功。

var googleNameSpace= defineNamespace("Google");

googleNameSpace.MyModel = Backbone.Model.extend({ .. .. });
googleNameSpace.MyCollection = Backbone.Collection.extend({ .. .. });



var MyModelInstance = new Google.MyModel();

2 个答案:

答案 0 :(得分:1)

在所有文件中首先添加此行

window.googleNameSpace = googleNameSpace || {};

更新:确定您需要谷歌作为命名空间,然后像这样

function defineNamespace(str) {
    window[str] = window[str] || {};
    return window[str];
}



googleNamespace = defineNamespace('Google');

现在可以使用

答案 1 :(得分:0)

您不需要为window添加前缀,因为这是假定的。你可以定义

window.myNamespace = Backbone.Model.extend({ .. .. });

然后仅使用以下内容引用它:

myNameSpace.....

e.g。

window.myModule.helpers = {
    ....
};

可以通过以下方式引用:

myModule.helper.{{property/method}}