从函数中,我想返回作为参数传递的对象的修改版本,而不影响原始对象(即无副作用)。所以本质上我想通过价值。我试图通过修改并返回对象的(深度)复制版本来做到这一点。但是我现在发现我对克隆对象所做的修改仍然会影响原始对象。
下面的代码片段演示了这一点,因为在 newObject 上调用 modifyMyData 会影响 oldObject 的数据
var clone = function(oldObject) {
return jQuery.extend(true, {}, oldObject);
}
var objf = function() {
var data = {list:[1],dic:{a:'3'}};
this.modifyMyData = function() {
data.list.push(3);
data.dic['e'] = 10;
}
this.getData = function() {
return data;
}
}
var old = new objf;
var newo = clone(old);
newo.modifyMyData();
我怎样才能解决这个问题?