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 相关文章推荐
js获取div高度的代码
Aug 09 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
Jan 22 Javascript
JS获取网页属性包括宽、高等等
Apr 03 Javascript
Javascript实现禁止输入中文或英文的例子
Dec 09 Javascript
JS对大量数据进行多重过滤的方法
Nov 04 Javascript
bootstrap网格系统使用方法解析
Jan 13 Javascript
基于javascript实现数字英文验证码
Jan 25 Javascript
jQuery实现可编辑表格并生成json结果(实例代码)
Jul 19 jQuery
js匿名函数使用&传参(实例)
Sep 08 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
Apr 03 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
Sep 12 Javascript
vue实现公告栏文字上下滚动效果的示例代码
Jun 16 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&mysql(一)
2006/10/09 PHP
网友原创的PHP模板类代码
2008/09/07 PHP
PHP 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
php 面试碰到过的问题 在此做下记录
2011/06/09 PHP
PHP程序开发范例学习之表单 获取文本框的值
2011/08/08 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
非常实用的PHP常用函数汇总
2014/12/17 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
PHP定时执行任务的3种方法详解
2015/12/21 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
JavaScript 编程引入命名空间的方法与代码
2007/08/13 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
jQuery循环遍历子节点并获取值的方法
2016/04/14 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
2016/12/19 Javascript
JQuery获取鼠标进入和离开容器的方向
2016/12/29 Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
2017/08/22 Javascript
react脚手架如何配置less和ant按需加载的方法步骤
2018/11/28 Javascript
原生JavaScript实现的无缝滚动功能详解
2020/01/17 Javascript
PyQt5响应回车事件的方法
2019/06/25 Python
python requests证书问题解决
2019/09/05 Python
Python接口自动化判断元素原理解析
2020/02/24 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
某科技软件测试面试题
2013/05/19 面试题
师范生的个人求职信范文
2014/01/04 职场文书
我的求职计划书
2014/01/10 职场文书
《小儿垂钓》教学反思
2014/02/23 职场文书
拔河比赛口号
2014/06/10 职场文书
中秋节国旗下演讲稿
2014/09/05 职场文书
个人工作总结范文2014
2014/11/07 职场文书
导游欢迎词范文
2015/01/23 职场文书
2015年公务员试用期工作总结
2015/05/28 职场文书
国王的演讲观后感
2015/06/03 职场文书