Shi*_*yan 4 javascript angularjs
有人可以解释一下angular.merge和angular.extend之间的区别.深拷贝意味着什么以及何时应该使用它?
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'}
}
Run Code Online (Sandbox Code Playgroud)
合并是深度(递归地)将源对象的属性复制到目标对象.
示例:合并人员和工作对象,反之亦然.
//------------------------------------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' };
}
Run Code Online (Sandbox Code Playgroud)
看看这个例子并进行比较以便更好地理解.如果错的话请纠正我.
PC:David Cai的博客
| 归档时间: |
|
| 查看次数: |
3979 次 |
| 最近记录: |