1、angular.copy

angular.copy(source, [destination]);  // source: copy的对象. 可以使任意类型, 包括null和undefined.    destination:接收的对象   返回复制或更新后的对象

如果省略了destination,一个新的对象或数组将会被创建出来;
如果提供了destination,则source对象中的所有元素和属性都会被复制到destination中;
如果source不是对象或数组(例如是null或undefined), 则返回source;
如果source和destination类型不一致,则会抛出异常。
 
angular.copy后,改变source不会影响destination,改变destination 不会改变source
var source=[1,'source',{id:1,source:'hello'}];
var des=angular.copy(source);
source[0]=9;
source[2].source='change';
console.log(des); //输出des不会变化
var source=[1,'source',{id:1,source:'hello'}];
var des=angular.copy(source);
des[0]=9;
des[2].source="change";
console.log(source); //输出source不变

2、angular.extend

angular.extend(destination, source);

复制src对象中的属性去dst对象中. 支持多个src对象. 如果你不想改变一个对象,你可以把dst设为空对象{}: var object = angular.extend({}, object1, object2). 注意: angular.extend不支持递归复制.

如果复制的是个基本数值,则改变source不会影响des,改变des不会影响source

var source=[1,'source',{id:1,source:'hellow'}];
var des=angular.extend(source);
source[0]=9;
source[2].source='change';
console.log(des);//des改变为和source一致
var source=[1,'source',{id:1,source:'hello'}];
var des=angular.extend(source);
des[0]=9;
des[2].source="change";
console.log(source); // source改变

多个对象复制时

 var modalOptions = {
closeButtonText: '取消',
actionButtonText: '确定',
headerText: 'Proceed?',
bodyText: 'Perform this action?',
backdrop:'false',
type:'1',
confirm:false
};
var customModalDefaults={
backdrop: 'static'
};
var temp={};
console.log(angular.extend(temp,modalOptions,customModalDefaults));
console.log(temp.backdrop);// static 我猜想可能是后面的对象的相同属性先替换前一个对象的相同属性,然后层层迭代,再传给目标对象 需要注意的是,虽是层层迭代,但modalOptions不会变,他的backdrop=false
console.log(angular.extend(temp,customModalDefaults,modalOptions));
console.log(temp.backdrop); // false 当多个源对象的属性不冲突时,就会合并一起传给目标对象

最新文章

  1. java相关的小问题
  2. 使用spring提供的LocalSessionFactoryBean来得到SessionFactory
  3. android开发学习---layout布局、显示单位和如何进行单元测试
  4. 列表的系列操作(python)
  5. JavaScript继承详解
  6. sharepoint2013 Restore-SPSite 报错,采用数据库还原
  7. python 函数定义及调用
  8. POJ 2417 Discrete Logging BSGS
  9. Spark SQL笔记
  10. android 8.0 intent安装apk失败屏幕闪过
  11. php中调用这个功能可以在web页面中显示hello world这个经典单词
  12. javascript数据结构与算法--基本排序算法(冒泡、选择、排序)及效率比较
  13. weblogic管理服务器密码相关
  14. MySQL INFORMATION_SCHEMA 使用
  15. C 标准库 - string.h之memchr使用
  16. poj 3122(二分查找)
  17. Java并发之——线程池
  18. 17.SQL 约束
  19. CURL命令的使用
  20. MySQL密码不能登陆问题

热门文章

  1. 洛谷P2835 刻录光盘 [2017年6月计划 强连通分量02]
  2. python的工具pip进行安装时出现 No module named 'pip'
  3. 组合数取模(lucas定理+CRT合并)(AC)
  4. UML时序图(Sequence Diagram)学习笔记
  5. python mooc 3维可视化<第一周第二&三单元>
  6. Leetcode867.Transpose Matrix转置矩阵
  7. Bnd教程(1):如何用命令行安装bnd
  8. hackerrank--- challenges/fp-update-list
  9. CSS面试题总结2(转)
  10. 发布网站时 遇到XX类型 同时存在XX.dll和XX.dll中