如何在没有空函数的javascript中实现对象组合?

时间:2013-07-15 20:21:52

标签: javascript

在为我们的团队开发新的javascript框架时,我一直想知道使用javascript类执行对象组合的最佳方法。

例如,我有一个名为ajax的简单对象(还有许多其他对象):

function ajax() {
}

ajax.prototype = {
    postJSON: function(url, data, callback) {
        return $.ajax({
            'type': 'POST',
            'url': url,
            'contentType': 'application/json',
            'data':JSON.stringify(data),
            'dataType': 'json',
            'success': callback
        });
    }
};

我有一个主要对象,可以访问框架的每个组件和自定义选项管理:

function ElDorado() {      
    ...
    this.ajax = new ajax();
    ...
}

最后,我使用的是限制范围:

(function(window, jQuery) {
    ... 
    [ajax object]
    ...
    [ElDorado main-object]
    ...
    window.ElDorado = new Eldorado();
})(window, jQuery);

所以,我有两个问题:

  1. 如何避免空的ajax“class”功能? (因为我没有私人/公共会员)。

  2. 访问当前对象中的其他对象的最佳方法是什么? 例如,现在我必须这样做:window.ElDorado.[other-object]

1 个答案:

答案 0 :(得分:2)

看起来,你只使用一个实例,你可以省略构造函数,直接创建对象:

this.ajax = {
    postJSON: function(url, data, callback) {
        return $.ajax({
            'type': 'POST',
            'url': url,
            'contentType': 'application/json',
            'data':JSON.stringify(data),
            'dataType': 'json',
            'success': callback
        });
    }
};

关于你的第二个问题:如果你想只有一个全局变量ElDorado,那么你的选择非常有限。所以以这种方式调用ElDorado的属性:

ElDorado.porperty

ElDorado["property"]

几乎是你最好的选择。