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 相关文章推荐
jQuery 使用手册(六)
Sep 23 Javascript
简单的两种Extjs formpanel加载数据的方式
Nov 09 Javascript
Javascript字符串对象的常用方法简明版
Jun 26 Javascript
JQuery设置获取下拉菜单某个选项的值(比较全)
Aug 05 Javascript
jQuery实现自定义下拉列表
Jan 05 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
Mar 30 Javascript
关于微信中a链接无法跳转问题
Aug 02 Javascript
AngularJS 过滤与排序详解及实例代码
Sep 14 Javascript
深入理解vue中slot与slot-scope的具体使用
Jan 26 Javascript
jQuery+ajax实现批量删除功能完整示例
Jun 06 jQuery
小程序实现上下移动切换位置
Sep 23 Javascript
JS实现音乐导航特效
Jan 06 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
php学习之 认清变量的作用范围
2010/01/26 PHP
PHP计算加权平均数的方法
2015/07/16 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
2016/08/12 PHP
Laravel5.4简单实现app接口Api Token认证方法
2019/08/29 PHP
thinkphp诸多限制条件下如何getshell详解
2020/12/09 PHP
PPK 谈 JavaScript 的 this 关键字 [翻译]
2009/09/29 Javascript
理解Javascript_07_理解instanceof实现原理
2010/10/15 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
javascript中的undefined和not defined区别示例介绍
2014/02/26 Javascript
js换图片效果可进行定时操作
2014/06/09 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
2017/03/10 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
基于iScroll实现下拉刷新和上滑加载效果
2017/07/18 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
构建大型 Vue.js 项目的10条建议(小结)
2019/11/14 Javascript
微信小程序使用GoEasy实现websocket实时通讯
2020/05/19 Javascript
Python中的变量和作用域详解
2016/07/13 Python
详解Python requests 超时和重试的方法
2018/12/18 Python
Python Numpy库安装与基本操作示例
2019/01/08 Python
Python实现FTP文件传输的实例
2019/07/07 Python
Pytorch反向求导更新网络参数的方法
2019/08/17 Python
给你一面国旗 教你用python画中国国旗
2019/09/24 Python
在Keras中利用np.random.shuffle()打乱数据集实例
2020/06/15 Python
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
戴尔英国翻新电脑和电子产品:Dell UK Refurbished Computers
2019/07/30 全球购物
Eclipse面试题
2014/03/22 面试题
实习评语
2013/12/16 职场文书
技校毕业生的自我评价
2013/12/27 职场文书
会计工作岗位职责
2015/02/03 职场文书
简单的辞职信怎么写
2015/02/28 职场文书
花田少年史观后感
2015/06/16 职场文书
纯html+css实现奥运五环的示例代码
2021/08/02 HTML / CSS