gpt4 book ai didi

javascript - 使用 Angular 将对象属性(没有值)复制到另一个对象

转载 作者:行者123 更新时间:2023-11-30 17:37:28 25 4
gpt4 key购买 nike

我们试过了angular.copyangular.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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com