美好的一天,
我创建了一个管理数据访问的对象。我的应用程序将使用几个不同的数据存储区,因此我创建了一个简单的工厂来在提供程序之间切换:
var dataProvider = {
company: {
getAllCompanies: function (callback) {
var impl = factory.createProvider(implInstance.current)
impl.company.getAllCompanies(callback);
}
}
projects: {
getAllProjects: function (callback) {
var impl = factory.createProvider(implInstance.current)
impl.projects.getAllProjects(callback);
}
}
}
这一切都很好,但我宁愿在dataProvider级别拥有我的impl变量。我不确定我是如何正确地访问它的,因为当我嵌套如此深刻时,“这个”并没有为我提供正确的范围。我想要以下内容:
var dataProvider = {
impl: function () { return factory.createProvider(implInstance.current) },
company: {
getAllCompanies: function (callback) {
//THIS WON'T WORK
this.impl.company.getAllCompanies(callback);
}
}
谢谢!
答案 0 :(得分:5)
您需要使用模块设计模式:
var dataProvider = (function () {
var getImpl = function () {
return factory.createProvider(implInstance.current);
};
return {
company: {
getAllCompanies: function (callback) {
getImpl().company.getAllCompanies(callback);
}
},
projects: {
getAllProjects: function (callback) {
getImpl().projects.getAllProjects(callback);
}
}
}
})();