【发布时间】:2016-04-19 11:07:28
【问题描述】:
我有一个对象,如果找到键匹配,我会搜索键并修改值:
var myData = // some http.get which returns a JSON object.
想象 myData 是:
myData : {
"suffix" : "mr",
"fname" : "jullian",
"lname" : "exor",
"dobGmt" : 145754294700000
"addressLine1" : "xxx",
"street" : "xxx",
"rentStartedGmt" : 145754294700000,
"deposit" : "50.00",
"occupation" : "math teacher",
"profession" : {
"careerStartedGmt": 1458755224800000,
"careerEndGmt": 1459854224800000,
}
}
$scope.viewData = function() {
var objClone = _.clone(myData);
objClone = myFactory.ProcessData(objClone);
$scope.view = objClone;
};
$scope.viewProducts = function() {
};
我的工厂:
myModule.factory('myFactory', function() {
return {
ProcessData: function(data) {
var tmp = data;
function findGmt(tmp) {
for (var key in tmp) {
var v = tmp[key];
if (key.indexOf("Gmt") !== -1) {
tmp[key] = tmp[key].format('DD-MM-YY HH:mm');
}
}
}
findGmt(tmp);
return tmp;
}
}
});
用户可以单击viewData 按钮,该按钮调用$scope.viewData,在同一页面上以模式显示格式化的JSON。
然后用户点击viewProducts,它调用$scope.viewProducts,在同一页面上以模式显示产品列表。
但是,在点击viewProducts 之后,如果我返回点击viewData 再次,在调试时,我可以看到 var objClone 已经格式化,而不是采用新的克隆_.clone(myData);
错过了如何克隆/不修改原始对象?
【问题讨论】:
-
@evolutionxbox 在上下文中重复,当操作要求完全不同的语言时没有帮助。
-
@Val - 我的错 - 删除
-
我个人会尝试这个链接,stackoverflow.com/questions/122102/…(这是
.extend,但不确定参考是否丢失,如你所问)
标签: javascript javascript-objects lodash