Javascript AngularJS-为什么$scope.property';s值在更改引用它的变量时发生更改
因此,我复制了一个Javascript AngularJS-为什么$scope.property';s值在更改引用它的变量时发生更改,javascript,angularjs,Javascript,Angularjs,因此,我复制了一个$scope.property,将其定义为另一个变量var query的值,当我更新var query的值时,它会更改$scope.property的值 为什么会发生这种情况?我如何避免这种情况 我的代码如下所示: var query = $scope.property; if(condition) { console.log($scope.property); $.extend(query, anotherObj); console.log($scop
$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"}
控制台中的输出如下所示:
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中遇到过这个问题
为什么会发生这种情况
您注意到query==$scope.property
?两者都引用了完全相同的对象,您可以在两个log语句之间对其进行更改
我怎样才能避免这种情况
你想如何避免这种情况?您是否希望query
是对象的克隆?那就看看吧
我从未在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);
为什么会发生这种情况
您注意到query==$scope.property
?两者都引用了完全相同的对象,您可以在两个log语句之间对其进行更改
我怎样才能避免这种情况
你想如何避免这种情况?您是否希望query
是对象的克隆?那就看看吧
我从未在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);
我想复制这个对象,而不是引用它。我写javascript已经两年了。我不敢相信我到现在才注意到这一点。lolI想复制这个对象,而不是引用它。我已经写javascript两年了。我不敢相信我到现在才注意到这一点。Lol我是否应该将这个问题标记为与angular无关并且之前已经回答过?我是否应该将这个问题标记为与angular无关并且之前已经回答过?