访问嵌套函数中的 javascript 对象属性

Accessing javascript object property within nested function

本文关键字:javascript 对象 属性 嵌套 函数 访问      更新时间:2023-09-26

美好的一天,

我创建了一个将管理数据访问的对象。我的应用程序将使用几个不同的数据存储,因此我创建了一个简单的工厂来在提供程序之间切换:

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);
    }
}
}

这一切都很好,但我宁愿将我的 impl 变量放在 dataProvider 级别。不过,我不确定如何正确访问它,因为当我嵌套得如此之深时,"this"并没有为我提供正确的范围。我想要如下的东西:

var dataProvider = {
impl: function () { return factory.createProvider(implInstance.current) },
company: {
    getAllCompanies: function (callback) {
        //THIS WON'T WORK
        this.impl.company.getAllCompanies(callback);
    }
}

谢谢!

您需要为此使用模块设计模式:

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);
            }
        }
    }
})();