Столкнулся с задачей. Нужно создать ряд объектов, у которых есть общее поведение, в моем случае это метод
get, но также у каждого есть куча других свойств, на основе которых и должен работать этот метод. Вот мой код, который получился для решения задачи:
(function(obj) {
function Request(action, params) {
var that = this;
for (var key in params) {
if (params.hasOwnProperty(key))
that[key] = params[key];
}
function updateParams() {
for (var key in params) {
if (params.hasOwnProperty(key) && that.hasOwnProperty(key))
params[key] = that[key];
}
}
this.get = function(callback) {
updateParams();
action(params, callback);
};
}
obj.RequestSomething = function() {
return new Request(controller.selectSomethings, {
key: "",
key1: "",
key2: "defaultValue"
});
};
obj.RequestCircle = function() {
return new Request(controller.selectCircles, {
radius: 0,
x: 0,
y: 0
});
};
})(testObj || testObj = {});
var rq = testObj.RequestSomethings();
rq.key1 = "test";
rq.get(function() { console.log(arguments); });
Мой вопрос состоит в том, как правильно это реализовать, используя
prototype или иным способом, который считается общепринятым. То есть нужно, чтоб у объектов был общий интерфейс, но каждый имел свою реализацию.