1

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

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

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

更新我看到的一种解决方法是使用此处描述ByteArray的方法对对象进行深层复制。不确定它的效率如何。也许那里有更好的解决方案。

4

1 回答 1

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));
}
于 2013-04-20T14:37:43.167 回答