Подтвердить что ты не робот

В чем разница между 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(=).

4b9b3361

Ответ 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 и наоборот.