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判断单选框或复选框是否选中方法集锦
Apr 04 Javascript
Jquery作者John Resig自己封装的javascript 常用函数
Nov 09 Javascript
js+flash实现的5图变换效果广告代码(附演示与demo源码下载)
Apr 01 Javascript
JavaScript Ajax编程 应用篇
Jul 02 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
Jan 20 Javascript
vue组件间通信解析
Mar 01 Javascript
hammer.js实现图片手势放大效果
Aug 29 Javascript
layDate日期控件使用方法详解
Nov 15 Javascript
回顾Javascript React基础
Jun 15 Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
Aug 03 Javascript
JS+canvas五子棋人机对战实现步骤详解
Jun 04 Javascript
Vue全局事件总线你了解吗
Feb 24 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
来自PHP.NET的入门教程
2006/10/09 PHP
php中url函数介绍及使用示例
2014/02/13 PHP
php获取表单中多个同名input元素的值
2014/03/20 PHP
详解php中反射的应用
2016/03/15 PHP
php实现微信小程序授权登录功能(实现流程)
2019/11/13 PHP
JQuery datepicker 使用方法
2011/05/20 Javascript
javascript控制swfObject应用介绍
2012/11/29 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
下雪了 javascript实现雪花飞舞
2020/08/02 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
详解Web使用webpack构建前端项目
2017/09/23 Javascript
纯JS实现可用于页码更换的飞页特效示例
2018/05/21 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
2019/06/04 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
vue实现图书管理系统
2020/12/29 Vue.js
[02:29]DOTA2英雄基础教程 陈
2013/12/17 DOTA
Python中生成器和yield语句的用法详解
2015/04/17 Python
python MySQLdb Windows下安装教程及问题解决方法
2015/05/09 Python
Python调用C# Com dll组件实战教程
2017/10/12 Python
python+matplotlib实现礼盒柱状图实例代码
2018/01/16 Python
Python补齐字符串长度的实例
2018/11/15 Python
解决新django中的path不能使用正则表达式的问题
2018/12/18 Python
美国精品地毯网站:Boutique Rugs
2020/03/04 全球购物
英文自荐信格式
2013/11/28 职场文书
污水厂厂长岗位职责
2014/01/04 职场文书
获奖的大学生创业计划书
2014/01/05 职场文书
进口业务员岗位职责
2014/04/06 职场文书
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
婚礼上证婚人致辞
2015/07/28 职场文书
网吧员工管理制度
2015/08/05 职场文书
怎样写工作总结啊!
2019/06/18 职场文书
JS ES6异步解决方案
2021/04/29 Javascript
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS
MySQL选择合适的备份策略和备份工具
2022/06/01 MySQL
SQL Server数据库的三种创建方法汇总
2023/05/08 MySQL