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 相关文章推荐
SWFObject 2.1以上版本语法介绍
Jul 10 Javascript
js动态移动滚动条至底部示例代码
Apr 24 Javascript
javascript动态修改Li节点值的方法
Jan 20 Javascript
JavaScript基于setTimeout实现计数的方法
May 08 Javascript
JavaScript中的原始值和复杂值
Jan 07 Javascript
JavaScript优化以及前段开发小技巧
Feb 02 Javascript
Vue.js中组件中的slot实例详解
Jul 17 Javascript
在nginx上部署vue项目(history模式)的方法
Dec 28 Javascript
jQuery实现菜单的显示和隐藏功能示例
Jul 24 jQuery
微信小程序自定义组件封装及父子间组件传值的方法
Aug 28 Javascript
快速解决Vue、element-ui的resetFields()方法重置表单无效的问题
Aug 12 Javascript
如何封装Vue Element的table表格组件
Feb 06 Vue.js
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
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
简单实用的.net DataTable导出Execl
2013/10/28 PHP
destoon实现VIP排名一直在前面排序的方法
2014/08/21 PHP
JavaScript对象、属性、事件手册集合方便查询
2010/07/04 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
2013/01/10 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
Js实现无刷新删除内容
2015/04/29 Javascript
bootstrap网页框架的使用方法
2016/05/10 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
js enter键激发事件实例代码
2016/08/17 Javascript
JavaScript省市区三级联动菜单效果
2016/09/21 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
几行js代码实现自适应
2017/02/24 Javascript
jQuery实现获取h1-h6标题元素值的方法
2017/03/06 Javascript
微信小程序 生命周期函数详解
2017/05/24 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
原生js实现简单的焦点图效果实例
2017/12/14 Javascript
答题辅助python代码实现
2018/01/16 Python
Python实现朴素贝叶斯分类器的方法详解
2018/07/04 Python
python 用for循环实现1~n求和的实例
2019/02/01 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
python向图片里添加文字
2019/11/26 Python
通过实例解析python创建进程常用方法
2020/06/19 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
python 写一个文件分发小程序
2020/12/05 Python
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
应届毕业生就业自荐信
2013/10/26 职场文书
经理职责范文
2013/11/08 职场文书
车贷收入证明范本
2014/09/14 职场文书
学前班幼儿评语大全
2014/12/29 职场文书
汤姆索亚历险记读书笔记
2015/06/29 职场文书
2016年幼儿园教师师德承诺书
2016/03/25 职场文书
CSS3实现的侧滑菜单
2021/04/27 HTML / CSS
使用jpa之动态插入与修改(重写save)
2021/11/23 Java/Android