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 相关文章推荐
firefox浏览器下javascript 拖动层效果与原理分析代码
Dec 04 Javascript
jquery 表单进行客户端验证demo
Aug 24 Javascript
基于jQuery UI CSS Framework开发Widget的经验
Aug 21 Javascript
Jquery图形报表插件 jqplot简介及参数详解
Oct 10 Javascript
JS保留小数点(四舍五入、四舍六入)实现思路及实例
Apr 25 Javascript
jquery中prop()方法和attr()方法的区别浅析
Sep 06 Javascript
javascript学习笔记之10个原生技巧
May 21 Javascript
纯javascript实现图片延时加载方法
Aug 21 Javascript
javascript闭包概念简单解析(推荐)
Jun 03 Javascript
JavaScript实现邮箱地址自动匹配功能代码
Nov 28 Javascript
Vue.js事件处理器与表单控件绑定详解
Mar 20 Javascript
原生JS实现 MUI导航栏透明渐变效果
Nov 07 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, PHP在Windows 9x/NT下的安装与配置 (一)
2006/10/09 PHP
PHP 读取文件内容代码(txt,js等)
2009/12/06 PHP
PHP基于单例模式实现的数据库操作基类
2016/01/15 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
PHP实现数据库的增删查改功能及完整代码
2018/04/18 PHP
让 JavaScript 轻松支持函数重载 (Part 2 - 实现)
2009/08/04 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
js简单实现让文本框内容逐个字的显示出来
2013/10/22 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
Javascript添加监听与删除监听用法详解
2014/12/19 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
浅谈Node.js之异步流控制
2017/10/25 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
[01:14:05]《加油DOTA》第四期
2014/08/25 DOTA
简单谈谈Python的pycurl模块
2018/04/07 Python
Python骚操作之动态定义函数
2019/03/26 Python
Python绘制二维曲线的日常应用详解
2019/12/04 Python
解决python3插入mysql时内容带有引号的问题
2020/03/02 Python
结束运行python的方法
2020/06/16 Python
Python request中文乱码问题解决方案
2020/09/17 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
THE OUTNET英国官网:国际设计师品牌折扣网站
2016/08/14 全球购物
美国在线旅行社:Crystal Travel
2018/09/11 全球购物
《分一分》教学反思
2014/04/13 职场文书
九一八事变纪念日演讲稿
2014/09/14 职场文书
2014年十一国庆节爱国演讲稿
2014/09/23 职场文书
招商引资工作汇报
2014/10/28 职场文书
基层党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
社区党员干部承诺书
2015/05/04 职场文书
大学升旗仪式主持词
2015/07/04 职场文书
2016关于读书活动的心得体会
2016/01/14 职场文书
Python代码实现双链表
2022/05/25 Python