我正在尝试在另一个类中修改Object。所以我有这样的事情:

MainClass.as:

..
var myObject:Object = new Object();
Class2_Instance.get_JSON(myObject);
trace(myObject.id); // output: undefined. whereas it should be 42. see below.
..

Class2.as
public function get_JSON(url:String , the_object:Object)
{
    var request:URLRequest = new URLRequest(url);
    var variables:URLLoader = new URLLoader();
    variables.dataFormat = URLLoaderDataFormat.TEXT;
    variables.addEventListener(Event.COMPLETE, Complete_Handler_JSON(the_object));
    try
    {
        variables.load(request);
    }
    catch (error:Error)
    {
        trace("Unable to load URL: " + error);
    }
}

function Complete_Handler_JSON(the_object:Object):Function
{
  return function(event:Event):void
  {
  var loader:URLLoader = URLLoader(event.target);
  the_object = JSON.parse(loader.data);
  trace(the_object.id); //returns 42.
  };
}

因此,JSON操作在Class2中可以正确执行,并且将.parse()值分配给the_object,但是我认为AS的传递引用逻辑对我不了解。因为我期望MainClass.as中的myObject也会发生变化。

如何直接修改函数参数(myObject)的值?

谢谢 !

最佳答案

Objects通过引用传递。

但是,正如我在您的代码中看到的那样,您正在在线上用另一个代码覆盖the_object:the_object=JSON.parse(loader.data)

您可以创建一个新变量,然后将值复制到the_object中:

var json:Object = JSON.parse(loader.data);
for (var k:String in json) {
 the_object[k]=json[k];
}

10-08 09:22
查看更多