Command pattern in JS
by bhupendra negi
JavaScript
var repo = {
tasks :{},
commands:[],
get: function(id) {
console.log("getting task witrh " + id);
},
save: function(task) {
//console.log(task);
this.tasks[task.id] = task;
console.log("saving " + task.name + " to DB");
},
replay:function()
{
//console.log(repo.commands);
for (var i=0;i<repo.commands.length;i++) {
var command = repo.commands[i];
repo.executeNoLog(command.name,command.obj);
}
}
}
repo.execute = function(name) {
var args = Array.prototype.slice.call(arguments, 1);
repo.commands.push({name:name,obj:args[0]});
console.log(args);
if (repo[name]) {
return repo[name].apply(this, args)
} else return false;
}
repo.executeNoLog = function(name) {
var args = Array.prototype.slice.call(arguments, 1);
if (repo[name]) {
return repo[name].apply(this, args)
} else return false;
}
repo.execute('save', {
name: "sample 1",
id:'task 1'
})
repo.execute('save', {
name: "sample 2",
id:'task 2'
})
repo.execute('save', {
name: "sample 3",
id:'task 3'
});
repo.tasks = {};
repo.replay();