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 相关文章推荐
如何在标题栏显示框架内页面的标题
Feb 03 Javascript
Google韩国首页图标动画效果
Aug 26 Javascript
jquery实现居中弹出层代码
Aug 25 Javascript
jquery 为a标签绑定click事件示例代码
Jun 23 Javascript
浅谈jQuery事件绑定原理
Jan 02 Javascript
基于jQuery滑动杆实现购买日期选择效果
Sep 15 Javascript
js中使用使用原型(prototype)定义方法的好处详解
Jul 04 Javascript
jQuery Easyui datagrid连续发送两次请求问题
Dec 13 Javascript
js验证手机号、密码、短信验证码代码工具类
Jun 24 Javascript
手机注册发送验证码倒计时的简单实例
Nov 15 Javascript
基于element-ui对话框el-dialog初始化的校验问题解决
Sep 11 Javascript
关于Node.js中频繁修改代码重启服务器的问题
Oct 15 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
使用Apache的rewrite技术
2006/06/22 PHP
汉字转化为拼音(php版)
2006/10/09 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
PHP区块查询实现方法分析
2018/05/12 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
jQuery中[attribute=value]选择器用法实例
2014/12/31 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
总结javascript中的六种迭代器
2016/08/16 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
2017/09/04 Javascript
koa socket即时通讯的示例代码
2018/09/07 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
一起写一个即插即用的Vue Loading插件实现
2019/10/31 Javascript
Python打印“菱形”星号代码方法
2018/02/05 Python
Python查看微信撤回消息代码
2018/06/07 Python
对python 读取线的shp文件实例详解
2018/12/22 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
Python3 翻转二叉树的实现
2019/09/30 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
python与mysql数据库交互的实现
2020/01/06 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
Python实例教程之检索输出月份日历表
2020/12/16 Python
美国波道夫·古德曼百货官网:Bergdorf Goodman
2017/11/07 全球购物
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
外语专业毕业生自荐信
2014/04/14 职场文书
三方协议书范本
2014/04/22 职场文书
硕士研究生就业推荐信
2014/05/18 职场文书
2014年党员创先争优承诺书
2014/05/29 职场文书
给老师的一封感谢信
2015/01/20 职场文书
2015年人事科工作总结
2015/04/28 职场文书
心灵捕手观后感
2015/06/02 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书