3
我的最终任务是完全恢复对象使用JSON以前保存。目前JSON只允许恢复数据,但不允许行为。 possilbe的解决方案是创建一个新的对象(让我们称之为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/ – 2012-03-06 08:13:27
更新:看来“深拷贝”应该是一个解决方案,但我不能使它工作在行为的一部分(数据恢复): http://jsfiddle.net/mr_goodcat/KfQrc/3/ – 2012-03-06 08:36:17
呀,我不能得到那个工作,无论是。复制嵌套的原型目前非常棘手,超出了我的想象。 – GregL 2012-03-06 09:04:50