0

在 Javascript 中,存在一个继承 Backbone 模型的函数

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

在另一个 JS 文件中,我们访问此函数为

var MyModelInstance = new window.MyModel();

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

我尝试了以下方法,但没有成功。

var googleNameSpace= defineNamespace("Google");

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



var MyModelInstance = new Google.MyModel();
4

2 回答 2

1

在所有文件中首先添加这一行

window.googleNameSpace = googleNameSpace || {};

更新:好的,你需要 google 作为命名空间,然后像这样

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



googleNamespace = defineNamespace('Google');

现在可以工作了

于 2013-11-07T11:22:39.510 回答
0

你不需要window像假设的那样在前面加上前缀。你可以定义

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

然后仅通过以下方式引用它:

myNameSpace.....

例如

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

可以参考:

myModule.helper.{{property/method}}
于 2013-11-07T11:25:53.733 回答