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 当多个源对象的属性不冲突时,就会合并一起传给目标对象

angular.extend vs angular.copy的更多相关文章

  1. angular.js 的angular.copy 、 angular.extend 、 angular.merge

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. angular.extend()和 angular.copy()的区别

    1.angular.copy angular.copy(source, [destination]);  // source: copy的对象. 可以使任意类型, 包括null和undefined. ...

  3. angular.extend深拷贝(deep copy)

    在用到angular.extend的时候,正好碰到一个对象,是层层嵌套的Array, 结果发现只能extend第一层,查阅官文档,确实不支持deep copy: Note: Keep in mind ...

  4. angular.extend、angular.$watch、angular.bootstrap

    1.angular.extend:依次将第二个参数及后续的参数的第一层属性(不管是简单属性还是对象)拷贝给第一个参数的第一层属性,即如果是对象,则是引用的是同一个对象,并返回第一个参数对象. 直接上代 ...

  5. AngularJs angular.forEach、angular.extend

    angular.forEach 调用迭代器函数取每一项目标的集合,它可以是一个对象或数组.迭代器函数与迭代器(value.key)一起调用,其中值是一个对象属性或数组元素的值,而数组元素是对象属性的关 ...

  6. Angular - - angular.forEach、angular.extend

    angular.forEach 调用迭代器函数取每一项目标的集合,它可以是一个对象或数组.迭代器函数与迭代器(value.key)一起调用,其中值是一个对象属性或数组元素的值,而数组元素是对象属性的关 ...

  7. 关于angular.extend的用法

    ng中的ng-function中会有些方法,便于我们进行js代码的编写 关于angular.extend(dst, src);通过从src对象复制所有属性到dst来扩展目标对象dst.你可以指定多个s ...

  8. angular.extend(dst,src)的简单示例

    自我认为这个方法跟angular.copy(src,dst)有点相似.在angular.extend({},src)时,就可以画等号.这个src只代表一个对象.代码如下:(注意这个src可以有多个对象 ...

  9. angular.extend用法实例

      angular.extend:依次将第二个参数及后续的参数的第一层属性(不管是简单属性还是对象)拷贝赋给第一个参数的第一层属性,即如果是对象,则是引用的是同一个对象,并返回第一个参数对象. 实例一 ...

随机推荐

  1. 2019-8-31-Developing-Universal-Windows-Apps-开发UWA应用-问答

    title author date CreateTime categories Developing Universal Windows Apps 开发UWA应用 问答 lindexi 2019-08 ...

  2. windows无法启动MySQL服务报错1067的解决方法是怎样?

    方法一: 1.打开my.ini文件,找到default-storage-engine=InnoDB这一行,把它改成default-storage-engine=MyISAM.2.删除在MySQL安装目 ...

  3. farv

    http://weishu.me/ https://github.com/jimupon/VirtualXposed O:  ?  api 26 - vdex N: speed-profile M: ...

  4. leetcode 1-20 easy

    1.Two Sum Given an array of integers, return indices of the two numbers such that they add up to a s ...

  5. 初次接触python的re模块

    刷CF的时候,看到一个简单的题目,可以用来练练正则表达式 于是乎找到了re.sub的用法,说明如下 re.sub: (pattern, repl, string, count=0, │       f ...

  6. 双系统删除ubuntu

    我的电脑安装了双系统,Windows和Linux,不过由于Linux在最近一段时间内不会使用,所以我打算删除Linux.    删除Linux最需要注意的地方,就是MBR(Master Boot Re ...

  7. 忘记用了delete释放内存,如何防止内存溢出

    C++的内存管理还是要自己来做的,自己要进行内存的申请和释放 程序直接kill掉,OS会回收的 但是面试要问到这个问题,其实是想问你别的 RAII,也称为“资源获取就是初始化”,是c++等编程语言常用 ...

  8. MySQL用户管理+MySQL权限管理

    我们现在默认使用的都是root用户,超级管理员,拥有全部的权限! 但是,一个公司里面的数据库服务器上面可能同时运行着很多个项目的数据库! 所以,我们应该可以根据不同的项目建立不同的用户,分配不同的权限 ...

  9. JS BOM 窗口中的使用

    1,弹框的种类 2,打开一个新页面 子窗口操作父窗口,打开新窗口显示内容open("opener.html","haha","width=300,he ...

  10. Error configuring application listener of class org.springframework.web.context.ContextLoaderListene 标签: tomcat

    今天敲完ssm框架,启动tomcat时报了这个错误.如图: SEVERE: Error configuring application listener of class org.springfram ...