angular.mergeとangular.extendの違いを教えてください。ディープコピーとは何を意味し、いつ使うべきですか?angular.mergeとangular.extendの違いは?
答えて
拡張:ソースオブジェクトのプロパティを右から左に、宛先オブジェクトまでずっとコピーします。
例:人と仕事のオブジェクトを拡張し、その逆も同様です。
//------------------------------------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であり、理解を深めるために比較しています。間違ったら私を修正してください。
角度のドキュメントから。
(伸びるとは異なり)、(マージ)を再帰的にディープコピーを行う、オブジェクトプロパティソースオブジェクトの に下降します。
深いコピーはどういう意味ですか? –
@ShijilNarayanネストされたオブジェクトがある場合、merge()もそれらをコピーしますが、extend()を使用するとオブジェクトはコピーされません。 – levi
ありがとうLevi for help –
- 1. angular.copyとangular.mergeの相違点
- 2. es6相当のangular.extend(this、object)
- 3. コントローラとオーバーライド関数のためのangular.extend()の使用
- 4. angular.extendに2つのargsまたは3つのargsがある
- 5. httpとデフォルトのservemuxの違いは?この違いは何
- 6. CSSのプロパティの違いは、Firefox 3.1と3.5の違いは?
- 7. PHPの::と - の違いは?
- 8. Scalaの&と&&の違いは?
- 9. _declspecと__declspecの違いは?
- 10. Liferay:DLFileEntryLocalServiceUtilとDLAppLocalServiceUtilの違いは?
- 11. オブジェクトとハッシュの違いは?
- 12. hash_mapとunordered_mapの違いは?
- 13. smtpClient.send()とsmtpClient.SendAsync()の違いは?
- 14. MemcachedとHadoopの違いは?
- 15. .tagとタグの違いは
- 16. requireとremote.requireの違いは?
- 17. UseCookieAuthenticationとUseIdentityの違いは?
- 18. javax.sqlとjava.sqlの違いは?
- 19. NSURLConnectionとNSUrlSessionの違いは?
- 20. SPList.ContentTypesEnabledとSPList.AllowContentTypesの違いは?
- 21. データマッパーパターンとリポジトリパターンの違いは?
- 22. os.getenvとos.environ.getの違いは?
- 23. クラッシュダンプとハングダンプの違いは?
- 24. OnSaveInstanceとOnRetainNonConfigurationInstanceの違いは?
- 25. クライアントとサーバーピアの違いは?
- 26. MessageBusとServiceBusの違いは?
- 27. response.endとresponse.sendの違いは?
- 28. `tf.nn.batch_normalization`と` tf.nn.fused_batch_norm`の違いは?
- 29. スパークスタンドアロンとローカルモードの違いは?
- 30. Indexeddb:onsuccessとoncompleteの違いは?
@ Shijil Narayan私は、人と仕事のオブジェクトの例でマージと拡張を使って深い(再帰的な)コピーと浅いコピーを説明しようとしました。 – monikapatel
Monicaに感謝します。あなたが与えた例は、物事をより明確にしました。 –
@ShijilNarayan私はあなたを助けてうれしいです。しかし、私はちょうど私のcodepenの例のリンクが保存されていないことを知って来て、デフォルトの角度jsのページを表示しています。私はそれのためのapplologies。しかし、私はちょうどそれを見て更新しました。 – monikapatel