在javascript中分配值

时间:2016-01-19 07:28:32

标签: javascript angularjs

我有两个对象:$scope.objectA$scope.objectB。 我将$scope.objectA的值分配给$scope.objectB,如下所示:

$scope.objectB.value1 = $scope.objectA.value1;

然后我将value1的{​​{1}}改为$scope.objectB;

null

我的问题是,当我将$scope.objectB.value1 = null; 分配给$scope.objectB.value1时,null也是$scope.objectA.value1。如何在更改null的价值时保持$scope.objectA.value1的价值?

4 个答案:

答案 0 :(得分:3)

复制对象B并将其指定给对象A.使用angular.copy函数。它将创建一个深层的源代码。

了解更多信息Visit Angular copy doc

$scope.objectA.value1 = angular.copy($scope.objectB.value1);

答案 1 :(得分:2)

因为这是它的工作原理。您将这两个变量“绑定”在一起。 如果您想保留objectA的值,请使用

$scope.objectB.value1 = angular.copy($scope.objectA.value1);

答案 2 :(得分:1)

我认为只有当ObjectA和ObjectB引用堆上的同一个对象时才会发生这种情况,即ObjectA和ObjectB是相同的对象

   - name: run container
     docker:
       registry: 172.20.20.20:5000
       insecure_registry: true
       image: pruebasjeje
       state: reloaded
       pull: always
       ports:
        - "8080:8080"

-

$scope['object1'] = {};
$scope['object1']['val'] = {};
$scope['object2'] = {};
$timeout(() => {
  this.$scope['object2']['val'] = this.$scope['object1']['val'];
  $timeout(() => {
   this.$scope['object2']['val'] = null;
      console.log(this.$scope['object1']['val']); // Object {}
    })
});

答案 3 :(得分:1)

原因是当您将object分配给变量时,分配将通过引用进行,因​​此旧的和新的将是对原始对象的引用

enter image description here

因此,当您编辑对象时,您实际上正在编辑原始object

解决方案

  1. Angular:使用object = angular.copy(myObject1)
  2. jQuery:object = $.extend({}, myObject1);