Qual é a diferença entre angular.copy () e uma atribuição (=)?

Eu quero atribuir alguns valores quando um evento de clique de botão acontece por meio do parâmetro de evento:

$scope.update = function(context) { $scope.master = context; }; 

Eu atribuí valores de user para $scope.master .

Agora estou vendo angular.copy () . Então eu escrevi o código com angular.copy .

 $scope.update = function(context) { $scope.master = angular.copy(context) }; 

Ambos estão fazendo o mesmo, então qual é a diferença? Por favor me diga sobre a diferença entre angular.copy() e equal(=) .

Como pode ser lido aqui, o angular.copy() executa uma cópia profunda (cf. “clone”) do argumento – essencialmente criando um novo object – ao passo que usar o operador de atribuição = apenas designa referências .

Assim, no último caso, se você quiser alterar algo em $scope.master , também mudará o context .

Felicidades,

= representa uma referência enquanto angular.copy() cria um novo object como uma cópia profunda.

Usar = significaria que alterar uma propriedade do context alteraria a propriedade correspondente de $scope.master ou vice-versa.

Usando angular.copy() os dois objects permaneceriam separados e as mudanças não refletiriam um no outro.

Quando você manipula tipos primitivos (como int) em Javascript, = e angular.copy são os mesmos que qualquer atribuição resulta em copiar o valor da variável.

Quando você manipula objects em Javascript, = atribui uma referência ao object existente à variável e angular.copy está copiando, isso significa criar um novo object com as mesmas propriedades e valores e atribuir a referência do novo object à variável.

Simplesmente

angular.copy() é o mesmo que .clone() de jquery que cria e retorna a mesma cópia de object com o departamento. (chamada por valor)

= atribui o valor com seu valor de referência (chamada por referência),

a = b neste a será b valor será atribuído a, mas se ambos a & b forem array então as alterações em a serão refletidas em b e vice-versa.