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 相关文章推荐
控制文字内容的显示与隐藏示例
Jun 11 Javascript
js实现文本框支持加减运算的方法
Aug 19 Javascript
js实现Select列表内容自动滚动效果代码
Aug 20 Javascript
静态页面html中跳转传值的JS处理技巧
Jun 22 Javascript
js 自带的 map() 方法全面了解
Aug 16 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
Aug 20 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
Oct 30 Javascript
Angular2学习笔记——详解路由器模型(Router)
Dec 02 Javascript
layui分页效果实现代码
May 19 Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
Jul 03 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
Sep 18 Javascript
详解vue如何使用rules对表单字段进行校验
Oct 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
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
tp5.1 框架数据库高级查询技巧实例总结
2020/05/25 PHP
Firebug入门指南(Firefox浏览器)
2010/08/21 Javascript
jQuery学习笔记 获取jQuery对象
2012/09/19 Javascript
Javascript拓展String方法小结
2013/07/08 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
ExtJs动态生成treepanel的Json格式
2015/07/19 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
2016/02/02 Javascript
Webwork 实现文件上传下载代码详解
2016/02/02 Javascript
Node.js DES加密的简单实现
2016/07/07 Javascript
AngularJs  unit-testing(单元测试)详解
2016/09/02 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
JS 设置Cookie 有效期 检测cookie
2017/06/15 Javascript
jQuery实现的form转json经典示例
2017/10/10 jQuery
webpack打包react项目的实现方法
2018/06/21 Javascript
小程序红包雨的实现示例
2019/02/19 Javascript
使用node搭建自动发图文微博机器人的方法
2019/03/22 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
vue的keep-alive用法技巧
2019/08/15 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
2019/09/18 Javascript
vue.js实现简单的计算器功能
2020/02/22 Javascript
通过实例了解JS执行上下文运行原理
2020/06/17 Javascript
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
2020/08/10 Javascript
js实现简单抽奖功能
2020/11/24 Javascript
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
用Python抢火车票的简单小程序实现解析
2019/08/14 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
2020/05/11 Python
一些网络技术方面的面试题
2014/05/01 面试题
撤诉申请怎么写
2015/05/19 职场文书
2016年会领导致辞稿
2015/07/29 职场文书
nginx配置限速限流基于内置模块
2022/05/02 Servers
virtualenv隔离Python环境的问题解析
2022/06/21 Python