漫谈移动新浪潮下的2012网络安全哲学
2011-09-19 17:08
162 查看
烈火网教程 关于flash
as3
中对象
深度拷贝的问题,我想大家都遇到了,至于如何实现这还真是一个难题,本人也是半瓶子醋,原来还真是没用过,今天google后自己总结下,便于大家参考。
as3中通过ByteArray可以进行对象的深度拷贝。
有的人说用复制对象那一段不就可以了吗,但是实际上行不通,对于数组
深度复制来说, 复制对象的后面4句代码就足够了
但是对于对象来说肯定不行,用列子测试下。src.youmila.as 代码:
yapollo.as 代码:
测试实例
var uml1:youmila = new youmila();
var uml2 = cloneObject(uml1);
trace(”类型”+getQualifiedClassName(uml2));
输出结果:
youmila
类型Object
原来的对象类型丢失了,所以对于对象而言,四行不够,必须
用registerClassAlias来保存类的别名,以用于丢失后恢复类的类型
测试实例
var uml1:youmila = new youmila();
var uml2 = cloneObject(uml1);
trace(”类型”+getQualifiedClassName(uml2));
var apollo:yapollo = new yapollo();
apollo.secondFunc();
var apollo2 = cloneObject(apollo);
trace(”第一次输出复制对象的$_num值”+apollo2.$_num);
trace(”类型”+getQualifiedClassName(apollo2));
apollo2.secondFunc();
trace(”第二次输出复制对象的$_num值”+apollo2.$_num);
输出结果:
youmila
输出类的结构src::youmila
类的名称src
[class youmila]
youmila
类型src::youmila
yapollo
this a called function $_num::1
输出类的结构yapollo
类的名称yapollo
[class yapollo]
yapollo
第一次输出复制对象的$_num值1
类型yapollo
this a called function $_num::2
第二次输出复制对象的$_num值2
as3
中对象
深度拷贝的问题,我想大家都遇到了,至于如何实现这还真是一个难题,本人也是半瓶子醋,原来还真是没用过,今天google后自己总结下,便于大家参考。
as3中通过ByteArray可以进行对象的深度拷贝。
import flash .utils.ByteArray; import flash.utils.getQualifiedClassName; import flash.net.*; import src.*; function cloneObject(source:Object) :* { var typeName:String = getQualifiedClassName(source);//获取全名 trace(”输出类的结构”+typeName); //return; var packageName:String = typeName.split(”::”)[0];//切出包名 trace(”类的名称”+packageName); var type:Class = getDefinitionByName(typeName) as Class;//获取Class trace(type); registerClassAlias(packageName, type);//注册Class //复制对象 var copier:ByteArray = new ByteArray(); copier.writeObject(source); copier.position = 0; return copier.readObject(); } |
深度复制来说, 复制对象的后面4句代码就足够了
var a1:Array=[1,2,3]; var a2:Array =cloneObject(a1); var a3:Array = a1; a1.push(”youmila”); trace(”a1:”+a1+”a2:”+a2+”a3″+a3); |
package src{ public class youmila{ private var $_name:String =”youmila”; private var $_num:Number =0; public function youmila():void{ trace($_name); } public function secondFunc():void{ $_num++; trace(”this a called function $_num::”+$_num); } } } |
package { public class yapollo{ private var $_name:String =”yapollo”; public var $_num:Number =0; public function yapollo():void{ trace($_name); } public function secondFunc():void{ $_num++; trace(”this a called function $_num::”+$_num); } } } |
var uml1:youmila = new youmila();
var uml2 = cloneObject(uml1);
trace(”类型”+getQualifiedClassName(uml2));
输出结果:
youmila
类型Object
原来的对象类型丢失了,所以对于对象而言,四行不够,必须
用registerClassAlias来保存类的别名,以用于丢失后恢复类的类型
测试实例
var uml1:youmila = new youmila();
var uml2 = cloneObject(uml1);
trace(”类型”+getQualifiedClassName(uml2));
var apollo:yapollo = new yapollo();
apollo.secondFunc();
var apollo2 = cloneObject(apollo);
trace(”第一次输出复制对象的$_num值”+apollo2.$_num);
trace(”类型”+getQualifiedClassName(apollo2));
apollo2.secondFunc();
trace(”第二次输出复制对象的$_num值”+apollo2.$_num);
输出结果:
youmila
输出类的结构src::youmila
类的名称src
[class youmila]
youmila
类型src::youmila
yapollo
this a called function $_num::1
输出类的结构yapollo
类的名称yapollo
[class yapollo]
yapollo
第一次输出复制对象的$_num值1
类型yapollo
this a called function $_num::2
第二次输出复制对象的$_num值2
相关文章推荐
- 网络安全的哲学思考
- 保护系统安全 防范网络炸弹四招
- 设计电力企业网络安全解决方案
- 易被忽视的网络安全问题
- 折腾网络安全的,最终学了法律
- 网络安全论坛一览
- 【iOS】MD5加密与网络数据安全
- Windows Server 2012 启用网络共享失败
- 2012 ACM/ICPC 成都赛区网络赛 HDU 4296
- nc (NetCat) 网络安全工具介绍,nc在centos里的rpm包叫啥
- 11月第4周网络安全报告:境内被篡改网站总数2836个
- 与Boss大雷探讨JavaWeb开发、电商与网络安全
- iOS网络请求安全(JWT,RSA)
- Linux网络安全之经验谈
- 网络安全day03_IP地址概述与应用
- 网络安全
- 网络安全
- CCNA网络工程师学习进程(5)路由器和交换机的登录安全配置和vlan划分
- 第四届山东省网络安全技能大赛 write up