浅谈angular.copy() 深拷贝


Posted in Javascript onSeptember 14, 2017

因为项目中需要拷贝,查阅angularjs API文档,发现对angular.copy() 的解释:

复制一个对象或者一个数组(好吧,万物皆对象,数组也是一个对象)。

1> 如果省略了destination,一个新的对象或数组将会被创建出来;
2> 如果提供了destination,则source对象中的所有元素和属性都会被复制到destination中;
3> 如果source不是对象或数组(例如是null或undefined), 则返回source;
4> 如果source和destination类型不一致,则会抛出异常。 注意:这个是单纯复制覆盖,不是类似继承。

使用方法:

angular.copy(source, [destination]);

参数:

参数名称 参数类型 描述
source * 被copy的对象. 可以使任意类型, 包括null和undefined.
destination (optional) Object,array copy去的目的地. 可以省略, 如果不省略, 其必须和source是同类

返回值:

返回复制或更新后的对象

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="http://apps.bdimg.com/libs/angular.js/1.2.16/angular.min.js"></script>
  </head>

  <body ng-app="copyApp">
    <div ng-controller="CopyController">
      <form novalidate class="simple-form">
        姓名: <input type="text" ng-model="user.name" /><br /> 
        年龄:<input type="number" ng-model="user.age" /><br /> 
        邮箱: <input type="email" ng-model="user.email" /><br />
        性别:<input type="radio" ng-model="user.gender" value="male" /> 男
        <input type="radio" ng-model="user.gender" value="female" /> 女
        <br />
        <button ng-click="reset()">重置</button>
        <button ng-click="update(user)">保存(拷贝)</button>
      </form>
      <pre>form = {{user | json}}</pre>
      <pre>master = {{master | json}}</pre>
    </div>

    <script>
      angular.module('copyApp', [])
        .controller('CopyController', ['$scope', function($scope) {
          $scope.master = {};
          $scope.update = function(user) {
            $scope.master = angular.copy(user);
            console.log($scope.master);
          };
          $scope.reset = function() {
            angular.copy($scope.user, $scope.master);
            console.log($scope.master);// Object { }
            console.log($scope.user); //undefined
          };
          $scope.reset();
        }]);
    </script>
  </body>

</html>

效果图

浅谈angular.copy() 深拷贝

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS简单循环遍历json数组的方法
Apr 22 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
Aug 26 Javascript
Sequelize中用group by进行分组聚合查询
Dec 12 Javascript
Angular2平滑升级到Angular4的步骤详解
Mar 29 Javascript
layui导航栏实现代码
May 19 Javascript
Vue动态实现评分效果
May 24 Javascript
jQuery实现动态删除LI的方法
May 30 jQuery
JS实现方形抽奖效果
Aug 27 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
Nov 05 Javascript
AngularJs中$cookies简单用法分析
May 30 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
Aug 10 Javascript
ztree+ajax实现文件树下载功能
May 18 Javascript
说说AngularJS中的$parse和$eval的用法
Sep 14 #Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
Sep 14 #Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
Sep 14 #Javascript
详解React Native顶|底部导航使用小技巧
Sep 14 #Javascript
Angularjs 1.3 中的$parse实例代码
Sep 14 #Javascript
浅谈JavaScript中的属性:如何遍历属性
Sep 14 #Javascript
基于node.js express mvc轻量级框架实践
Sep 14 #Javascript
You might like
教你如何把一篇文章按要求分段
2006/10/09 PHP
PHP伪静态页面函数附使用方法
2008/06/20 PHP
用php来改写404错误页让你的页面更友好
2013/01/24 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
2014/11/24 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
setAttribute 与 class冲突解决
2008/02/17 Javascript
jquery插件制作 自增长输入框实现代码
2012/08/17 jQuery
简述jQuery ajax的执行顺序
2016/01/05 Javascript
jquery实现简单的遮罩层
2016/01/08 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
JQuery控制图片由中心点逐渐放大效果
2016/06/26 Javascript
JavaScript登录验证码的实现
2016/10/27 Javascript
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
JavaScript 数组的进化与性能分析
2017/09/18 Javascript
详解webpack模块化管理和打包工具
2018/04/21 Javascript
原生JS实现DOM加载完成马上执行JS代码的方法
2018/09/07 Javascript
手把手带你封装一个vue component第三方库
2019/02/14 Javascript
react+redux仿微信聊天界面
2019/06/21 Javascript
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
Python实现简单的四则运算计算器
2016/11/02 Python
Python断言assert的用法代码解析
2018/02/03 Python
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
pandas 将list切分后存入DataFrame中的实例
2018/07/03 Python
pycharm 在windows上编辑代码用linux执行配置的方法
2018/10/27 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
Python3如何对urllib和urllib2进行重构
2019/11/25 Python
tensorflow的计算图总结
2020/01/12 Python
python将字典内容写入json文件的实例代码
2020/08/12 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
2021/01/29 Python
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
校园门卫岗位职责
2013/12/09 职场文书
物理专业本科生自荐信
2014/01/30 职场文书
工作说明书范文
2014/05/07 职场文书
个人党性锻炼总结
2015/03/05 职场文书
如何撰写促销方案?
2019/07/05 职场文书
golang 实现并发求和
2021/05/08 Golang