AngularJS extend用法详解及实例代码


Posted in Javascript onNovember 15, 2016

AngularJS extend用法

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

        实例一:var r = angular.extend(b, a);将对象a的第一层属性(不管是简单属性还是对象)拷贝赋给对象b的第一层属性,即如果是对象,则是引用的是同一个对象,并返回对象b

Js代码 

var a = { 
  name : 'bijian', 
  address : 'shenzhen', 
  family : { 
    num : 6, 
    amount : '80W' 
  } 
}; 
var b = {}; 
var r = angular.extend(b, a); 
console.log('a:' + JSON.stringify(a)); 
console.log('b:' + JSON.stringify(b)); 
console.log('r:' + JSON.stringify(r)); 
 
b.address = 'hanzhou'; 
b.family.amount = '180W'; 
console.log('a:' + JSON.stringify(a)); 
console.log('b:' + JSON.stringify(b)); 
console.log('r:' + JSON.stringify(r));

运行结果:

Text代码 

a:{"name":"bijian","address":"shenzhen","family":{"num":6,"amount":"80W"}} 
b:{"name":"bijian","address":"shenzhen","family":{"num":6,"amount":"80W"}} 
r:{"name":"bijian","address":"shenzhen","family":{"num":6,"amount":"80W"}} 
a:{"name":"bijian","address":"shenzhen","family":{"num":6,"amount":"180W"}} 
b:{"name":"bijian","address":"hanzhou","family":{"num":6,"amount":"180W"}} 
r:{"name":"bijian","address":"hanzhou","family":{"num":6,"amount":"180W"}}

         实例二:var r = angular.extend(b, a, z);相继将对象a、z的第一层属性(不管是简单属性还是对象)拷贝赋给对象b的第一层属性,即如果是对象,则是引用的是同一个对象,并返回对象b

Js代码 

var a = { 
  name : 'bijian', 
  address : 'shenzhen', 
  family : { 
    num : 6, 
    amount : '80W' 
  } 
}; 
var z = { 
  family : { 
    amount : '150W', 
    mainSource : '经营公司' 
  } 
}; 
var b = {}; 
var r = angular.extend(b, a, z); 
console.log('a:' + JSON.stringify(a)); 
console.log('b:' + JSON.stringify(b)); 
console.log('r:' + JSON.stringify(r)); 
 
b.address = 'hanzhou'; 
b.family.amount = '180W'; 
console.log('a:' + JSON.stringify(a)); 
console.log('b:' + JSON.stringify(b)); 
console.log('r:' + JSON.stringify(r));

运行结果:

Text代码 

a:{"name":"bijian","address":"shenzhen","family":{"num":6,"amount":"80W"}} 
b:{"name":"bijian","address":"shenzhen","family":{"amount":"150W","mainSource":"经营公司"}} 
r:{"name":"bijian","address":"shenzhen","family":{"amount":"150W","mainSource":"经营公司"}} 
a:{"name":"bijian","address":"shenzhen","family":{"num":6,"amount":"80W"}} 
b:{"name":"bijian","address":"hanzhou","family":{"amount":"180W","mainSource":"经营公司"}} 
r:{"name":"bijian","address":"hanzhou","family":{"amount":"180W","mainSource":"经营公司"}}

        再多的实例也不如源代码来的简单、直接和准确,angular.extend源码如下:

Js代码 

/** 
 * @ngdoc function 
 * @name angular.extend 
 * @function 
 * 
 * @description 
 * Extends the destination object `dst` by copying all of the properties from the `src` object(s) 
 * to `dst`. You can specify multiple `src` objects. 
 * 
 * @param {Object} dst Destination object. 
 * @param {...Object} src Source object(s). 
 * @returns {Object} Reference to `dst`. 
 */ 
function extend(dst) { 
 var h = dst.$$hashKey; 
 forEach(arguments, function(obj){ 
  if (obj !== dst) { 
   forEach(obj, function(value, key){ 
    dst[key] = value; 
   }); 
  } 
 }); 
 
 setHashKey(dst,h); 
 return dst; 
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
JavaScript 解析读取XML文档 实例代码
Jul 07 Javascript
锋利的jQuery jQuery中的DOM操作
Mar 21 Javascript
js获取系统的根路径实现介绍
Sep 08 Javascript
常用js字符串判断方法整理
Oct 18 Javascript
用js的document.write输出的广告无阻塞加载的方法
Jun 05 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
Nov 02 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
Mar 06 Javascript
使用JS中的exec()方法构造正则表达式验证
Aug 01 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
Feb 23 Javascript
vue中关闭eslint的方法分析
Aug 04 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
Aug 07 Javascript
浅谈Ant Design Pro 菜单自定义 icon
Nov 17 Javascript
Windows系统下安装Node.js的步骤图文详解
Nov 15 #Javascript
jQuery checkbox选中问题之prop与attr注意点分析
Nov 15 #Javascript
javascript实现消灭星星小游戏简单版
Nov 15 #Javascript
js滚轮事件兼容性问题需要注意哪些
Nov 15 #Javascript
禁用backspace网页回退功能的实现代码
Nov 15 #Javascript
sea.js常用的api简易文档
Nov 15 #Javascript
js实现倒计时及时间对象
Nov 15 #Javascript
You might like
世界收音机发展史
2021/03/01 无线电
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
PHP实现的浏览器检查类
2016/04/11 PHP
PDO实现学生管理系统
2020/03/21 PHP
JavaScript实现点击自动选择TextArea文本的方法
2015/07/02 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
2016/10/16 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
jQuery-App输入框实现实时搜索
2020/11/19 jQuery
[02:17]2016国际邀请赛中国区预选赛VG战队领队采访
2016/06/26 DOTA
[01:01:41]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第二场 1月31日
2021/03/11 DOTA
将pandas.dataframe的数据写入到文件中的方法
2018/12/07 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
对python中的控制条件、循环和跳出详解
2019/06/24 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
浅谈pycharm使用及设置方法
2019/09/09 Python
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
美国百货齐全的精品网站,提供美式风格的产品:Overstock.com
2016/07/22 全球购物
在印度上传处方,在线订购药品:Medlife
2019/03/28 全球购物
公司领导推荐信
2013/11/12 职场文书
软件毕业生个人鉴定
2014/03/03 职场文书
优秀的个人求职信范文
2014/05/09 职场文书
校庆标语集锦
2014/06/25 职场文书
销售竞赛活动方案
2014/08/23 职场文书
做人民满意的公务员活动方案
2014/08/25 职场文书
党员创先争优心得体会
2014/09/11 职场文书
民事赔偿协议书
2014/11/02 职场文书
孝老爱亲事迹材料
2014/12/24 职场文书
2016春节家属慰问信
2015/03/25 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
Redis如何一键部署脚本
2021/04/12 Redis
Node实现搜索框进行模糊查询
2021/06/28 Javascript
浅谈Redis缓冲区机制
2022/06/05 Redis
Django中celery的使用项目实例
2022/07/07 Python