浅谈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 相关文章推荐
JavaScript 解析Json字符串的性能比较分析代码
Dec 16 Javascript
jquery常用方法及使用示例汇总
Nov 08 Javascript
javascript实现超炫的向上滑行菜单实例
Aug 03 Javascript
微信小程序 Image API实例详解
Sep 30 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
May 25 Javascript
解决vue2中使用axios http请求出现的问题
Mar 05 Javascript
vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)
Apr 20 Javascript
基于ionic实现下拉刷新功能
May 10 Javascript
AngularJS 监听变量变化的实现方法
Oct 09 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
Sep 16 Javascript
BootstrapValidator验证用户名已存在(ajax)
Nov 08 Javascript
Vue.js原理分析之nextTick实现详解
Sep 07 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
PHP中Session的概念
2006/10/09 PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
2009/10/11 PHP
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
2015/10/22 PHP
PHP中Cookie的使用详解(简单易懂)
2017/04/28 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
jQuery的一些特性和用法整理小结
2010/01/13 Javascript
js实时监听文本框状态的方法
2011/04/26 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
node.js中的socket.io入门实例
2014/04/26 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
JS实现随机颜色的3种方法与颜色格式的转化
2017/01/05 Javascript
js实现二级导航功能
2017/03/03 Javascript
简述ES6新增关键字let与var的区别
2019/08/23 Javascript
js实现列表按字母排序
2020/08/11 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
Python对象转JSON字符串的方法
2016/04/27 Python
理解生产者消费者模型及在Python编程中的运用实例
2016/06/26 Python
浅谈Python中的bs4基础
2018/10/21 Python
python简单实现AES加密和解密
2019/03/28 Python
Python 中如何实现参数化测试的方法示例
2019/12/10 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
2020/05/26 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
孕妇内衣和胸罩:Cake Maternity
2018/07/16 全球购物
学习型班组申报材料
2014/05/31 职场文书
2014高中生入党思想汇报范文
2014/09/13 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
生日赠语
2015/06/23 职场文书
幼儿园园长六一致辞
2015/07/31 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书
2016年教师党员创先争优承诺书
2016/03/24 职场文书
PHP 对接美团大众点评团购券(门票)的开发步骤
2021/04/03 PHP
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python
react 路由Link配置详解
2021/11/11 Javascript
MySQL视图概念以及相关应用
2022/04/19 MySQL