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 相关文章推荐
JavaScript中实现继承的三种方式和实例
Jan 29 Javascript
jQuery Validate插件实现表单验证
Aug 19 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
Dec 01 Javascript
Bootstrap基本插件学习笔记之按钮(21)
Dec 08 Javascript
移动端刮刮乐的实现方式(js+HTML5)
Mar 23 Javascript
jQuery tip提示插件(实例分享)
Apr 28 jQuery
vue实现模态框的通用写法推荐
Feb 26 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
Sep 19 Javascript
JavaScript RegExp 对象用法详解
Sep 24 Javascript
JavaScript如何借用构造函数继承
Nov 06 Javascript
详解JavaScript原型与原型链
Nov 16 Javascript
React 高阶组件HOC用法归纳
Jun 13 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的宝库目录--PEAR
2006/10/09 PHP
7个超级实用的PHP代码片段
2011/07/11 PHP
浅谈本地WAMP环境的搭建
2015/05/13 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
js树形控件脚本代码
2008/07/24 Javascript
javascript sudoku 数独智力游戏生成代码
2010/03/27 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
JS获取html对象的几种方式介绍
2013/12/05 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
JQ实现新浪游戏首页幻灯片
2015/07/29 Javascript
JS组件中bootstrap multiselect两大组件较量
2016/01/26 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
vue实现移动端悬浮窗效果
2018/12/01 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
vue柱状进度条图像的完美实现方案
2019/08/26 Javascript
python实现闹钟定时播放音乐功能
2018/01/25 Python
python3.x上post发送json数据
2018/03/04 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
2018/05/31 Python
解决python线程卡死的问题
2019/02/18 Python
网易有道2017内推编程题 洗牌(python)
2019/06/19 Python
python 杀死自身进程的实现方法
2019/07/01 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
关于pytorch处理类别不平衡的问题
2019/12/31 Python
Python网络爬虫信息提取mooc代码实例
2020/03/06 Python
python如何编写win程序
2020/06/08 Python
高级工程师岗位职责
2013/12/15 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
2014年大学宣传部工作总结
2014/12/19 职场文书
幼儿园新生开学寄语
2015/05/27 职场文书
当幸福来敲门英文观后感
2015/06/01 职场文书
关于车尾的标语大全
2015/08/11 职场文书
职场:企业印章管理制度(模板)
2019/10/18 职场文书
SpringBoot快速入门详解
2021/07/21 Java/Android
python代码实现备忘录案例讲解
2021/07/26 Python
PostgreSQL聚合函数介绍以及分组和排序
2022/04/12 PostgreSQL