所以我通过将其定义为另一个变量$scope.property
的值来复制var query
,当我更新var query
的值时,它会更改$scope.property
的值}。
为什么会发生这种情况,我该如何避免这种情况?
我的代码看起来像这样:
var query = $scope.property;
if(condition) {
console.log($scope.property);
$.extend(query, anotherObj);
console.log($scope.property);
}
控制台中的输出如下所示:
> Object {details-type: "order", details-bind_date_formatted: "03/19/2013"}
> Object {details-type: "order", details-bind_date_formatted: "03/19/2013", details-state: "CA"}
我从未在vanilla javascript中遇到过这个问题。
答案 0 :(得分:2)
为什么会发生这种情况
您注意到query === $scope.property
?两者都引用完全相同的对象,您可以在两个日志语句之间进行更改。
我该如何避免这种情况?
你想如何避免这种情况?你期望query
成为对象的克隆吗?然后,请参阅How do I correctly clone a JavaScript object?或What is the most efficient way to deep clone an object in JavaScript?。
我从未在vanilla javascript中遇到过这个问题。
不太可能,因为jQuery只是由vanilla JS构建的:
var scope = {a:{b:1}};
var a = scope.a;
console.log(scope.a); // or just log(a);
a.c = 0; // or scope.a.c = 0;
console.log(scope.a); // or just log(a);
答案 1 :(得分:2)
var query = angular.copy($scope.property);