Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何创建未连接到原始对象的对象的副本_Javascript_Angularjs - Fatal编程技术网

Javascript 如何创建未连接到原始对象的对象的副本

Javascript 如何创建未连接到原始对象的对象的副本,javascript,angularjs,Javascript,Angularjs,我在javascript代码中遇到了一些问题,我称之为bug,但我相信这在技术上是一个特性!所以我有一个json实体,我创建了一个新实体,并将其与第一个实体相等。现在,我在第二个上执行的任何更改都将影响到原始的更改 下面是我创建的一个简单示例: 鉴于代码: $scope.a = { name: "mike", age: 10 }; $scope.b = $scope.a; $scope.b.name = "john"; a.的名字不应该是“迈克”而只有b.的名字应该是“约翰

我在javascript代码中遇到了一些问题,我称之为bug,但我相信这在技术上是一个特性!所以我有一个json实体,我创建了一个新实体,并将其与第一个实体相等。现在,我在第二个上执行的任何更改都将影响到原始的更改

下面是我创建的一个简单示例:

鉴于代码:

$scope.a = {
    name: "mike",
    age: 10
};

$scope.b = $scope.a;

$scope.b.name = "john";

a.的名字不应该是“迈克”而只有b.的名字应该是“约翰”吗?为什么这两个都会发生?

这绝对不是一个bug。您已通过引用分配给
$scope.b
。由于,
$scope.b
发生了变化,因此,
$scope.a
也将发生变化

对于不同的参考,应使用
angular.copy

$scope.b = angular.copy($scope.a);

这绝对不是一个bug。您已通过引用分配给
$scope.b
。由于,
$scope.b
发生了变化,因此,
$scope.a
也将发生变化

对于不同的参考,应使用
angular.copy

$scope.b = angular.copy($scope.a);

顺便说一句,您没有“json实体”。你有一个简单明了的对象,顺便说一句,你没有“json实体”。你有一个简单明了的对象。