我试图在我的javscript对象中存储'this'的统计信息,以便稍后在我的应用程序中可以将'this'返回到以前的状态。我认为我可以完成使用封闭,但到目前为止我还没有成功。我的想法是在我的应用程序做这样的事情JavaScript对象的存储状态
function SavedFeature() {
var self = this;
this.savedItem;
this.storeState = function() {
this.savedItem = storeClosure();
}
function storeClosure() {
var closure = self;
return function() {
return closure;
};
};
//other things the user can change...
}
所以以后如果我需要回到点,当我打电话storeState我只是做
//return the object I put in my closure
var backToNormal = savedFeature.savedItem();
不工作,虽然因为我调用storeState()后对我的savedFeature对象所做的任何更改都会反映到从被调用savedItem()中检索的项目中。我猜这是因为关闭被设置为自我引用而不是复制到新实例。
有没有办法将我的整个对象的状态存储在这样的闭包中,还是我需要以其他方式存储这些东西。
似乎深度复制是完成整个对象的唯一方法。 – ThrowsException