Command|javascript
The realization is simply too simple ... A dynamic language is a good thing.
First define a command object with the following code:
function Command (obj) {
var commandobj = obj; Save the reference of working object
var oldprop = new Object (); Save Old properties
Set new properties and save old properties
This. do = function () {
for (Var o in this) {
Oldprop[o] = Commandobj[o];
Commandobj[o] = This[o];
}
}
Restore Old Properties
This. Undo = function () {
for (Var o in Oldprop) {
Commandobj[o] = Oldprop[o];
}
Delete Oldprop;
Oldprop = new Object ();
}
}
If you want to invoke it, you can write it:
"MC" is a object that has _alpha and _x attributes
var com = new Command (MC);
Com._alpha = 20;
com._x = 200;
Com. Do ();
Do something ...
Remember to save this Command somewhere ...
Now, undo it!
Com. Undo ();
Marvel at the simplicity and harmony of this!