我们试过了angular.copy和 angular.extend .但是,这两者都复制属性值。我们如何将一个对象的属性(没有它们的值)复制到另一个对象?
这是一个fiddle我们基于 how-to-quickly-clear-a-javascript-object 的尝试.
angular.module('App', []);
function Ctrl($scope) {
function copyNotValues(obj) {
var newObj = angular.copy(obj);
for (prop in newObj) {
if(newObj.hasOwnProperty(prop))
{
newObj[prop] = null;
}
};
return newObj;
}
$scope.master = {
foo: 'original foo',
bar: 'original bar'
};
$scope.copy = angular.copy($scope.master);
$scope.extend = angular.extend($scope.master);
$scope.copyNotValues = copyNotValues($scope.master);
}
最佳答案
JavaScript 没有类的概念。它使用原型(prototype)继承,这意味着您只能通过复制另一个对象来创建新对象。这样做时,您将获得属性。
您可以通过创建一个没有属性值的“主”对象来解决这个问题。像这样:
master = {
foo: '',
bar: ''
};
然后您可以使用 new 关键字创建对象的新“实例”:
$scope.master = new master();
$scope.master.foo = 'original foo';
$scope.master.bar = 'original bar';
当您需要创建对象的新实例时,返回到原始对象,而不是您的副本:
$scope.masterCopy = new master();
这实际上是一个 JavaScript 问题,而不是 Angular 特定的问题。我想从理论上讲,您可以编写一个函数来创建对象的新实例,然后遍历属性以将它们全部设置为 null 或空字符串。
关于javascript - 使用 Angular 将对象属性(没有值)复制到另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21742974/