浅谈angular.copy() 深拷贝

发布时间 - 2026-01-11 03:15:08    点击率:

因为项目中需要拷贝,查阅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>

效果图

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


# AngularJS  # copy  # 深拷贝  # angular.copy()  # angularJS深拷贝详解  # AngularJS API之copy深拷贝详解及实例  # 将会  # 好吧  # 则会  # 抛出  # 大家多多  # 返回值  # 象中  # 文档  # DOCTYPE  # lt  # xhtml  # html  # array  # Object  # optional  # utf  # charset  # equiv  # content  # Type 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  如何在阿里云购买域名并搭建网站?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  如何快速启动建站代理加盟业务?  Laravel如何处理和验证JSON类型的数据库字段  C#如何调用原生C++ COM对象详解  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  Python面向对象测试方法_mock解析【教程】  香港服务器WordPress建站指南:SEO优化与高效部署策略  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  Laravel如何使用Telescope进行调试?(安装和使用教程)  Laravel如何实现API版本控制_Laravel版本化API设计方案  Laravel如何处理异常和错误?(Handler示例)  北京企业网站设计制作公司,北京铁路集团官方网站?  如何在宝塔面板中修改默认建站目录?  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  制作公司内部网站有哪些,内网如何建网站?  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  公司网站制作需要多少钱,找人做公司网站需要多少钱?  jQuery validate插件功能与用法详解  如何构建满足综合性能需求的优质建站方案?  在线制作视频的网站有哪些,电脑如何制作视频短片?  PHP 500报错的快速解决方法  网站制作壁纸教程视频,电脑壁纸网站?  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  如何在阿里云域名上完成建站全流程?  南京网站制作费用,南京远驱官方网站?  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  网站制作企业,网站的banner和导航栏是指什么?  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  如何在IIS服务器上快速部署高效网站?  Laravel如何处理CORS跨域请求?(配置示例)  如何快速搭建安全的FTP站点?  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  JS弹性运动实现方法分析  Linux安全能力提升路径_长期防护思维说明【指导】  如何在Windows服务器上快速搭建网站?  php json中文编码为null的解决办法  Android使用GridView实现日历的简单功能  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  javascript中的try catch异常捕获机制用法分析  Swift中switch语句区间和元组模式匹配  香港服务器如何优化才能显著提升网站加载速度?  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  公司网站制作价格怎么算,公司办个官网需要多少钱?  轻松掌握MySQL函数中的last_insert_id()  如何在宝塔面板创建新站点?