angular.extend:依次将第二个参数及后续的参数的第一层属性(不管是简单属性还是对象)拷贝赋给第一个参数的第一层属性,即如果是对象,则是引用的是同一个对象,并返回第一个参数对象。

实例一:var r = angular.extend(b, a);将对象a的第一层属性(不管是简单属性还是对象)拷贝赋给对象b的第一层属性,即如果是对象,则是引用的是同一个对象,并返回对象bvar 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));

运行结果:

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的第一层属性,即如果是对象,则是引用的是同一个对象,并返回对象bvar 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));
运行结果:

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源码如下:
​
/**
 * @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;
}

AngularJS学习之angular.extend用法实例相关推荐

  1. angular中copy和extend用法实例

    angular.copy() 深拷贝 定义: 复制一个对象或者一个数组 1. 如果省略了destination,一个新的对象或数组将会被创建出来: 2. 如果提供了destination,则sourc ...

  2. python模块用法教程_Python学习之asyncore模块用法实例教程

    本文以实例分析了Python中asyncore模块的原理及用法,分享给大家供大家参考.具体分析如下: asyncore库是python的一个标准库,它是一个异步socket的包装.我们操作网络的时候可 ...

  3. PHP - 回调函数概念与用法实例分析 - 学习/实践

    1.应用场景 主要用于理解回调函数的概念, 对比JavaScript中的回调函数, 更加深刻理解回调函数的本质, 以及如何高效使用~~~ 2.学习/操作 1. 文档阅读 https://www.jb5 ...

  4. mysql数据库select语句用法_mysql学习笔记之完整的select语句用法实例详解

    本文实例讲述了mysql学习笔记之完整的select语句用法.分享给大家供大家参考,具体如下: 本文内容: 完整语法 去重选项 字段别名 数据源 where group by having order ...

  5. angularjs学习总结(资料收集)

    angularjs学习总结(资料收集) 原文地址https://blog.csdn.net/weixin_33178524/article/details/79179597 1 前言 前端技术的发展是 ...

  6. 开启AngularJS学习之旅

    AngularJS 通过新的属性和表达式扩展了 HTML. AngularJS 可以构建一个单一页面应用程序(SPAs:Single Page Applications). AngularJS 学习起 ...

  7. 推荐10个很棒的AngularJS学习指南

    AngularJS 是非常棒的JS框架,能够创建功能强大,动态功能的Web app.AngularJS自2009发布以来,已经广泛应用于Web 开发中.但是对想要学习Angular JS 的人而言,只 ...

  8. angularjs学习大纲

    l什么是angularJs? •基于javascript开发的客户端应用框架,使我们可以更加快捷,简单的开发web应用. •诞生于2009年,后来被google收购,用在了很多项目中. •适用于CRU ...

  9. AngularJS学习之旅—AngularJS 模块(十五)

    一.AngularJS 模块 模块定义了一个应用程序. 模块是应用程序中不同部分的容器. 模块是应用控制器的容器. 控制器通常属于一个模块. 1.创建模块 通过 AngularJS 的 angular ...

最新文章

  1. C# 多线程 参数传递
  2. 通过插件自动将maven项目打成jar包的同时将当前项目依赖的第三方Jar包一起打包
  3. 734. [网络流24题] 方格取数问题 二分图点权最大独立集/最小割/最大流
  4. Linux多线程贝叶斯建树教程,建树经验.doc
  5. Tomcat关闭失败,SEVERE: Could not contact localhost:8005. Tomcat may not be running.
  6. C和C++结构体区别
  7. 洛谷P2759 奇怪的函数
  8. aotuwried是java的注解吗_@autowire注入为null
  9. 【神经网络与深度学习】卷积神经网络在自然语言处理的应用
  10. r语言 图形一览_R语言实战(第2版):第三章 图形初阶(01)
  11. JVM之静态编译优化以及JIT编译
  12. jmeter mysql 执行计划_[PT_06] 性能测试-场景设计与实现(登录随机购买业务)
  13. vscode remote 离线环境搭建
  14. 计算机职称考试试题 操作题,2018职称计算机考试Excel备考试题及答案9-excel操作练习题...
  15. 强制选择“你是不是喜欢我” python实现
  16. 渗透测试神器Nmap使用教程
  17. NOI2014起床困难综合症
  18. javascript中对this的理解
  19. 制作一个简单的大数据看板(FineReport-帆软)
  20. 【学习笔记】Baby Step Giant Step算法及其扩展

热门文章

  1. RabbitMQ学习之旅
  2. 12-18-2018学习2.410.6
  3. 鼠标在用了一段之后偶然发现以给特别慢的速度移动鼠标,会在移动到可点击的选项按钮附近明显的卡住问题。
  4. input type=file 禁止让用户手动输入
  5. 计算机学科教育案例怎么写,关于举办2019年学院《计算机应用基础》课程教学改革实验案例征文比赛的通知...
  6. 【汇编】汇编中的函数
  7. _variant_t与其他数据类型的转换
  8. Android 安卓动画 属性动画 - 旋转动画
  9. U74LVC1G07G-SOT353R-TG
  10. 最新-安装Windows与Ubuntu双系统