最後に、JSONを使用して以前に保存したオブジェクトを完全に回復することです。今のところ、JSONはデータのリカバリのみを許可しますが、動作は許可しません。解決策は、新しいオブジェクトを作成し(objと呼ぶ)、JSON-recovered-objectからobjにデータをコピーすることです。しかし、それは私のためによく見えません。 JavaScriptでオブジェクトプロトタイプを動的に変更する方法はありますか?JavaScriptオブジェクトのプロトタイプを動的に変更する
それは私が(自作のコピー方法を使用して)、現時点では問題を解決する方法は次のとおりです。
function Obj() {
this.D = "D";
this.E = "E";
this.F = "F";
this.toString = function() {
return this.D + " * " + this.E + " * " + this.F;
};
this.copy = function (anotherObj) {
for (var property in anotherObj) {
if (isDef(anotherObj[property]) && isDef(this[property])) {
this[property] = anotherObj[property];
}
}
}
}
;
$(document).ready(function() {
var str = $.toJSON(new Obj());
$("#result").append("<p>JSON: " + str + "</p>");
var obj = new Obj();
obj.copy($.parseJSON(str));
$("#result").append("<p>Recovered obj: " + obj.toString() + "</p>");
});
function isDef(variable)
{
return typeof variable !== undefined;
}
。それは私が探していたものです。 http://jsfiddle.net/mr_goodcat/KfQrc/2/ –
更新:「ディープコピー」は解決策に見えますが、動作させることはできません(データが復旧しました): http://jsfiddle.net/mr_goodcat/KfQrc/3/ –
ええ、私もそれを動作させることができませんでした。入れ子にされたプロトタイプをコピーするのは難しいし、今のところ私を超えている。 – GregL