Javascriptのプロトタイプ継承とは?
元になるオブジェクトを新しいオブジェクトに格納した場合、
新しいオブジェクト側で値の変更があった場合
、元になるオブジェクトも変更する
挙動です。
この機能はAngularでScopeを多用するときにもかなり便利なのですが、ある条件のときはこれが邪魔になる場合があったりするので
そんな時の回避方法。
元のオブジェクト
$scope.options = {1:'いぬ', 2:'うさぎ', 3:'ねこ'};
新しいオブジェクトにoptionsを格納
$scope.value = $scope.options;
上記の格納方法だと、$scope.value
の値が変更された場合に$scope.options
の値も変更されます。
$scope.value
の値が変更された場合に、$scope.options
の値を変更したくない場合は、
Angular.copyを使う
$scope.value = angular.copy($scope.options);
angular.copy
を使って元オブジェクトの値の変更を回避できます。