如何在没有空函数的情况下用javascript实现对象组合

How to implement object composition in javascript without empty functions?

本文关键字:情况下 javascript 实现 组合 对象 函数      更新时间:2023-09-26

在为我们的团队开发新的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]

由于似乎只使用一个实例,因此可以省略构造函数,直接创建对象:

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"]

是你最好的选择。

相关文章: