我想扩展一些属性递归(aka。deep copy)。
很像jQuery。我不包括jquery只有b / c的一件事。
很像jQuery。我不包括jquery只有b / c的一件事。
jQuery.extend( true,target,object1 )
有没有什么优雅的方式,你知道这是用简单的javascript或angularjs?
更新
请看看,尝试完成相同的结果
http://plnkr.co/edit/GHabYbyhsqtfBPtplksO?p=preview
这是一个基于angular.extend函数的extendDeep函数。如果您将其添加到您的$范围内,则可以调用
原文链接:https://www.f2er.com/angularjs/145069.html$scope.Meta = $scope.extendDeep(ajaxResponse1.myMeta,ajaxResponse2.defaultMeta);
并得到您正在寻找的答案。
$scope.extendDeep = function extendDeep(dst) { angular.forEach(arguments,function(obj) { if (obj !== dst) { angular.forEach(obj,function(value,key) { if (dst[key] && dst[key].constructor && dst[key].constructor === Object) { extendDeep(dst[key],value); } else { dst[key] = value; } }); } }); return dst; };
注意:该函数具有从稍后参数复制到早期参数的副作用。要简单的解决这个副作用,你可以将dst [key] = value改为dst [key] = angular.copy(value)。