我試圖在我的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