在为我们的团队开发新的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);
所以,我有两个问题:
如何避免空的ajax“class”功能? (因为我没有私人/公共会员)。
访问当前对象中的其他对象的最佳方法是什么?
例如,现在我必须这样做:window.ElDorado.[other-object]
答案 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"]
几乎是你最好的选择。