gpt4 book ai didi

javascript - angular.copy 有什么好处?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:32:33 25 4
gpt4 key购买 nike

我在某些情况下使用 angular.copy,比如将模型默认值复制到表单模型,如下所示:

var customerModel = {
name: '',
point: 0
};

$scope.customer = angular.copy(customerModel);

function save() {
//... Reset $scope.customer after success submit
$scope.customer = angular.copy(customerModel);
}

... 以防止更改默认的 customerModel。

但为什么要复制空对象或数组呢? {} 或 []

我发现在一些代码中对空对象或数组使用了 angular.copy。为什么他们不将空对象直接分配给变量?

$scope.customer = {}; // or [] for array

如果您在空对象或数组上使用复制,您能解释一下好处吗?

ajax 响应 ($http) 怎么样?

还有一个问题,你对ajax响应做了什么?将其复制或直接分配给变量?

$http
.get('example.com/api/v1/get/customer/1')
.success(function(response) {
$scope.customer = angular.copy(response.data);
// or do you use $scope.customer = response.data ?
})
;

如果你使用复制,你认为响应对象发生了什么?是否留在内存中?还是自动删除?

最佳答案

您复制一个对象以防止其他代码修改它。 (原始对象可能会更改,但您的副本不会看到更改)

如果你要这样做:

 $scope.customer = customerModel

...和一些回调/服务/诸如此类的东西改变了customerModel,你的范围会反射(reflect)这个变化。这并不总是可取的,因此需要深度复制。

复制空文字对象

$scope.customer = angular.copy({})
// or
$scope.customer = {}

这没有任何区别。每次都是一个新的空对象。请注意,它与此有很大不同:

this.customerModel = {};
$scope.customer = angular.copy(this.customerModel)

复制ajax响应数据

适用相同的规则。如果你想确保这个对象不会从你下面改变(例如,如果你也将它传递到其他地方,可能会发生这种情况),你应该复制它。

关于javascript - angular.copy 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31424722/

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