| 谈谈Flash的一些语法基础和系统核心 2.7 数据克隆:我是谁? |
|
谈谈Flash的一些语法基础和系统核心 2.7 数据克隆:我是谁? |
| 作者:佚名 来源:闪吧 作者: ox_thedarkness 更新:2007-1-13 20:47:28 错误报告 我要投稿 |
参与本文讨论:闪吧本文讨论帖 有一个重要问题就是,对一个对象有多个引用,那么,变量到底引用的是谁? 在后面我们要介绍的克隆方法出现之后,如何判断谁是对象的克隆,谁是原来的变量? 你看,如果我们设计一个简单的迭代方法来实现克隆: 1 如果对象是简单变量,克隆他到对应位置。 2 如果对象是object,那么对应位置建立一个新的空object,并且访问原object回到1。 3 如果本级的目标访问完了,那么回到上一级。 看起来很正常,但是如果对象有自引用呢?
a= {}; a.a = a; 上面的逻辑就会无限的循环下去。 解决的关键很简单。 if(a == b) 那么a和b是同一个对象的引用,而克隆的东西则会返回false。 对于上面的问题来说,就是:啊啊……麻烦阿……我们需要建立一个“引用过的引用”的栈来避免走到无限循环迷宫里去
|
|
| 文章录入:skyuu 责任编辑:skyuu |
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |