2016-09-12 1 views

答えて

4

拡張:ソースオブジェクトのプロパティを右から左に、宛先オブジェクトまでずっとコピーします。

例:人と仕事のオブジェクトを拡張し、その逆も同様です。

 //------------------------------------Extend-------------------------- 

     $scope.extendPersonToJob = function() { 
      var person = { 'Name': 'Monica', 'Age': '25', 'Skills': { 'name': 'travelling', 'place': 'Queenstown' } }; 
      var job = { 'Title': 'Programmer', 'Experience': '5', 'Skills': { 'name': 'Designing', 'experience': '2', 'certified': 'true' } }; 
      // extend from Person to Job 

      $scope.personTojob = angular.extend(person, job); 
      //output : {{ 'Name': 'Monica', 'Age': '25', 'Skills': { 'name': 'Designing', 'experience': '2', 'certified': 'true' } , 'Title': 'Programmer', 'Experience': '5'}    
     } 

     $scope.extendJobToPerson = function() { 
      var person = { 'Name': 'Monica', 'Age': '25', 'Skills': { 'name': 'travelling', 'place': 'Queenstown' } }; 
      var job = { 'Title': 'Programmer', 'Experience': '5', 'Skills': { 'name': 'Designing', 'experience': '2', 'certified': 'true' } }; 

      // extend from job to person 
      $scope.jobToperson = angular.extend(job, person) 
      //output : {{ 'Name': 'Monica', 'Age': '25', 'Skills': { 'name': 'travelling' , 'place': 'Queenstown' } , 'Title': 'Programmer', 'Experience': '5'}    

     } 

マージは、ソースオブジェクトのプロパティをデスティネーションオブジェクトに深く(再帰的に)コピーすることです。

例:人と仕事のオブジェクトをマージし、その逆も同様です。

//------------------------------------Merge------------------------------ 
     $scope.mergePersonToJob = function() { 

      var person = { 'Name': 'Monica', 'Age': '25', 'Skills': { 'name': 'travelling', 'place': 'Queenstown' } }; 
      var job = { 'Title': 'Programmer', 'Experience': '5', 'Skills': { 'name': 'Designing', 'experience': '2', 'certified': 'true' } }; 
      // merge from Person to Job 

      $scope.personTojob = angular.merge(person, job); 

      //output : { 'Name': 'Monica', 'Age': '25', 'Skills': { 'name': 'Designing', 'experience': '2', 'certified': 'true', 'place': 'Queenstown' }, 'Title': 'Programmer', 'Experience': '5' }; 
     } 

     $scope.mergeJobToPerson = function() { 
      var person = { 'Name': 'Monica', 'Age': '25', 'Skills': { 'name': 'travelling', 'place': 'Queenstown' } }; 
      var job = { 'Title': 'Programmer', 'Experience': '5', 'Skills': { 'name': 'Designing', 'experience': '2', 'certified': 'true' } }; 

      // merge from job to person 
      $scope.jobToperson = angular.merge(job, person) 

      // //output : { 'Name': 'Monica', 'Age': '25', 'Skills': { 'name': 'travelling', 'experience': '2', 'certified': 'true', 'place': 'Queenstown' }, 'Title': 'Programmer', 'Experience': '5' }; 
     } 

この図はExampleであり、理解を深めるために比較しています。間違ったら私を修正してください。

PC:David Cai's Blog

+0

@ Shijil Narayan私は、人と仕事のオブジェクトの例でマージと拡張を使って深い(再帰的な)コピーと浅いコピーを説明しようとしました。 – monikapatel

+0

Monicaに感謝します。あなたが与えた例は、物事をより明確にしました。 –

+0

@ShijilNarayan私はあなたを助けてうれしいです。しかし、私はちょうど私のcodepenの例のリンクが保存されていないことを知って来て、デフォルトの角度jsのページを表示しています。私はそれのためのapplologies。しかし、私はちょうどそれを見て更新しました。 – monikapatel

1

角度のドキュメントから。

(伸びるとは異なり)、(マージ)を再帰的にディープコピーを行う、オブジェクトプロパティソースオブジェクトの に下降します。

+0

深いコピーはどういう意味ですか? –

+0

@ShijilNarayanネストされたオブジェクトがある場合、merge()もそれらをコピーしますが、extend()を使用するとオブジェクトはコピーされません。 – levi

+0

ありがとうLevi for help –

関連する問題