我想通过值将对象传递给函数,以便我可以对该对象进行修改。我不希望更新原始对象。但是,所有函数参数都是通过引用传递的。
我试图复制一个对象 ( var new_object:Object = original_object;
) 这只是创建一个指向original_object
.
有没有办法可以按值传递参数?
更新我看到的一种解决方法是使用此处描述ByteArray
的方法对对象进行深层复制。不确定它的效率如何。也许那里有更好的解决方案。
我想通过值将对象传递给函数,以便我可以对该对象进行修改。我不希望更新原始对象。但是,所有函数参数都是通过引用传递的。
我试图复制一个对象 ( var new_object:Object = original_object;
) 这只是创建一个指向original_object
.
有没有办法可以按值传递参数?
更新我看到的一种解决方法是使用此处描述ByteArray
的方法对对象进行深层复制。不确定它的效率如何。也许那里有更好的解决方案。
在将对象传递给函数之前,您必须对其进行复制:
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));
}