В чем разница между angular.copy() и присваиванием (=)?
Я хочу назначить некоторые значения, когда событие нажатия кнопки происходит через параметр события:
$scope.update = function(context) {
$scope.master = context;
};
Я присвоил значения user
$scope.master
.
Теперь я вижу angular.copy(). Поэтому я написал код с angular.copy.
$scope.update = function(context) {
$scope.master = angular.copy(context)
};
Оба делают то же самое, так в чем же разница? Расскажите, пожалуйста, о разнице между angular.copy()
и equal(=)
.
Ответы
Ответ 1
Как можно читать здесь angular.copy()
выполняет глубокую копию (см. "клон" ) аргумента - по существу создавая новый объект, - тогда как использование назначения оператор =
просто назначает ссылку.
Таким образом, в последнем случае, если вы хотите что-то изменить в $scope.master
, вы также измените context
.
Приветствия,
Ответ 2
=
представляет ссылку, тогда как angular.copy()
создает новый объект как глубокую копию.
Использование =
означает, что изменение свойства context
изменит соответствующее свойство $scope.master
или наоборот.
Используя angular.copy()
, два объекта останутся отдельными, и изменения не будут отражаться друг на друге.
Ответ 3
Когда вы манипулируете примитивными типами (например, int) в Javascript, =
и angular.copy
являются такими же, как любое присваивание, приводит к копированию значения переменной.
Когда вы манипулируете объектами в Javascript, =
присваиваете ссылку на существующий объект переменной и angular.copy
копирует, это означает создание нового объекта с теми же свойствами и значениями и назначение ссылки на новый объект на переменная.
Ответ 4
Просто
angular.copy()
такой же, как .clone()
jquery, который создает и возвращает ту же копию объекта с dept. (вызов по значению)
=
он присваивает значение своим опорным значением (вызов по ссылке),
a = b
в этом значении b
присваивается значение a
, но если оба a
и b
являются массивами, тогда изменения в a
отразятся в b
и наоборот.