Actionscript - 如何按值传递对象?

dev*_*per 1 actionscript actionscript-3

我想通过值将对象传递给函数,以便我可以对该对象进行修改.我不希望更新原始对象.但是,所有函数参数都通过引用传递.

我试图复制一个对象(var new_object:Object = original_object;)这只是创建一个指针original_object.

有没有办法可以按值传递参数?

更新一个解决方法我看到的是通过使对象的深拷贝ByteArray这里所描述.不确定它的效率如何.也许那里有更好的解决方案.

Bar*_*klı 5

在将对象传递给函数之前,您必须复制该对象:

public function copy(value:Object):Object
{
    var buffer:ByteArray = new ByteArray();
    buffer.writeObject(value);
    buffer.position = 0;
    var result:Object = buffer.readObject();
    return result;
}

public function testFunction(obj:Object):void
{  
   //do something with obj
}

public function test():void
{
  var obj:Object = {};
  testFunction(copy(obj));
}
Run Code Online (Sandbox Code Playgroud)

  • 在这里查看方法`copy`和`clone`:http://opensource.adobe.com/svn/opensource/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/ObjectUtil.as我使用的副本基本上就是从那里开始的. (3认同)