Topic:有一个Array的实例arrS,其元素可能为String,Number或Array,将arrS深拷贝。

方法1:通过传说中的“AS3隐藏特性——ByteArray.writeObject和readObject”进行操作,代码如下:

var arrA:Array = [1, 2, 5];
var arrS:Array = [5, arrA, 9, 10];
var arrClone:Array;
var nT:int = getTimer();
var bta:ByteArray = new ByteArray();
for (var i:int = 0; i < 100000; i++) { bta.length = 0; bta.writeObject(arrS); bta.position = 0; arrClone = bta.readObject(); } trace(getTimer() - nT);

执行时间:average(452,447,460,456,464)=456ms


方法2:通过工具类进行拷贝,工具类代码如下:

public class ArrayUtil
{/***/public static function deepClone(arrS:Array):Array{var arrResult:Array = [];for each (var i:* in arrS) {if ( i is Array ){arrResult.push(deepClone(i));}else { arrResult.push(i); } } return arrResult; } }

具体使用代码如下:

var arrA:Array = [1, 2, 5];
var arrS:Array = [5, arrA, 9, 10];
var arrClone:Array;
var nT:int = getTimer();
for (var i:int = 0; i < 100000; i++)
{arrClone = ArrayUtil.deepClone(arrS); } trace(getTimer() - nT);

执行时间:average(280,272,270,271,271)=273ms

转载于:https://www.cnblogs.com/andytang555/p/4722323.html

AS3深拷贝数据对象(1)深拷贝基本数据类型相关推荐

  1. js 对象深拷贝、对象数组深拷贝的几种方法总结

    写前端的时候经常会遇到对象的拷贝,一般我们会用到深拷贝,深拷贝就是完完整整的将一个对象从内存中拷贝一份出来,放到另一块新开辟的内存中去.向下面这种赋值是浅拷贝,a.b都是对同一块内存进行引用,a.b哪 ...

  2. vue对象深拷贝_Vue 对数据对象实现深拷贝赋值

    在日常的Vue开发工作中,我们经常对请求来的数据进行变量赋值操作,再用变量去进行数据渲染. 然而我们知道,我们经常用的赋值方式 "=" 实际上属于数据的浅拷贝,也就是当你改变赋值变 ...

  3. vue对象深拷贝_JS 对象的深拷贝和浅拷贝

    现象 我们先来看一个demo // 我们先申明一个变量str1, // 然后把变量str1负值(拷贝)给变量str2 // 最后对变量str2进行修改操作 var str1 = 'shen' var ...

  4. ES6/04/严格模式,开启严格模式,严格模式与普通模式对比发生了那些变化,高阶函数,闭包函数,递归函数,递归实例(1,阶乘,2,斐波那契数列,3,根据id返回对应数据对象),浅拷贝和深拷贝

    函数 开启严格模式 1,用 " use strict"; 语句为整个脚本(即:script标签)开启严格模式;在<script>标记的第一行写上"use st ...

  5. 一文搞懂前端对象的深拷贝与浅拷贝

    在前端开发过程中常常会听到对象的深拷贝与浅拷贝,对于初学者来说,可能是傻傻的分不清楚,本人将详细介绍javascript中对象的深拷贝与浅拷贝. 一.javascript中的数据类型 基础数据类型 字 ...

  6. 浅谈对象的深拷贝和浅拷贝

    浅谈对象的深拷贝和浅拷贝 一.为什么使用对象的拷贝? 1.在普通数据类型赋值 let a=10let b=aa=20console.log(a)//a=20console.log(a)//b=10 因 ...

  7. javaScript对象的深拷贝和浅拷贝

    深拷贝和浅拷贝定义 浅拷贝:只是拷贝了基本类型的数据,而引用类型数据,复制后也是会发生引用,我们把这种拷贝叫做浅拷贝(浅复制).浅拷贝只复制指向某个对象的指针(引用地址),而不复制对象本身,新旧对象还 ...

  8. 原生js实现对象的深拷贝及循环引用

    我们使用Object.assign(target,-sources)时,其实只是浅拷贝.只能复制第一层属性,而如果第一层属性中有对象或数组的话,其实只是对对象或数组的引用而已. 我们修改target里 ...

  9. Python基础:对象的深拷贝和浅拷贝的区别

    Python基础:对象的深拷贝和浅拷贝的区别 1 变量与对象 2 不可变对象与可变对象 3 直接赋值 4 浅拷贝 5 深拷贝 参考文献 1 变量与对象 对象:内存中存储数据的实体,有明确的类型.在Py ...

最新文章

  1. 为什么 OLAP 需要列式存储
  2. 大专计算机学语数英理化生吗,学考11-13号报名啦!你知道语数英和政史地/物化生成绩有什么作用嘛?不懂你会后悔的!!...
  3. 一万字,关于产品「需求」阶段的思维公式,都在这儿了
  4. UVA 10020 Minimal coverage
  5. ios14的蓝牙弹窗_iOS14来了,总结一下给你带来了哪些最实用的功能
  6. Android 第五课 常用控件的使用方法(TextView、Button、EditView、 ImageView、 ProgressBar、 ProgressDialog等)
  7. 【转载】Ubuntu终端常用的快捷键
  8. 设计模式——Decorator 装饰模式
  9. 大爷与支付宝同名,曾想状告阿里巴巴侵权,现在过得怎么样
  10. 在java中使用solrj对solr进行CRUD
  11. JZOJ 3455. 【NOIP2013模拟联考3】库特的向量(code)
  12. 显示墙 显示服务器地址,云墙怎么看服务器地址
  13. python基础语法手册-Python学习手册(第4版)pdf
  14. iOS中storyboard故事板使用Segue跳转界面、传值
  15. 网络编程 upd 发送接收数据
  16. 计算机无法连上网怎么办,电脑显示已连接上但是无法上网怎么办
  17. 如何在Android上关闭YouTube烦人的自动播放缩略图
  18. 富爸爸穷爸爸-罗伯特.清崎 pdf下载与思维导图
  19. 试卷代号:4988 2021年春季学期期末统一考试电子政务概论 试题(开卷)
  20. 漫谈递归——递归需要满足的两个条件

热门文章

  1. Linux CentOS7 中 完美解决VMTools失效,windows 与 Liunx间完美复制文件,无报错的解决方案
  2. Matlab学习一本通,matlab基础教程
  3. 试编写小字典软件c程序,用tcc编译为trans.exe, 功能是读取文本文件in.txt,依据命令行参数输出对应查找结果
  4. mysql数据万能导入工具下载_mysql数据导入工具下载 - 数据导入工具(EMS Data Export for MySQL) v3.7.0多语特别版下载 - 第九软件网...
  5. #ifdef _DEBUG #define new DEBUG_NEW #endif的解释
  6. 理解Windows内核模式与用户模式
  7. 读写配置文件(.ini)
  8. 双系统用wmware挂载linux,安装Windows 和 Linux双系统(vmware) Centos7
  9. inotify加rsync备份mysql_centos7 实现inotify-tools + rsync,自动备份mysql数据库
  10. 几种常见的用于拟合的分布