Actionscript通过引用传递

时间:2010-09-14 11:24:33

标签: flex actionscript-3 pass-by-reference

package {
    import flash.display.Sprite;

public class test1 extends Sprite {

private var tmp:Object;

public function test1() {
  createObj(tmp);
  if(tmp == null) {
    trace("nothing changed");
  }
}

private function createObj(obj:Object):void {
  obj = new Object();
}

}
}

在上面的代码中,控制台上的输出是:
没有改变

为什么呢?

如果createObj的参数是通过引用传递的(这是 actionscript的默认行为),为什么没有被修改?

1 个答案:

答案 0 :(得分:4)

您没有传递参考。您正在传递分配给局部变量null的{​​{1}},以便在函数中使用。

Passing arguments by value or by reference

  

通过引用传递 意味着   只提到参数是   传递而不是实际值。没有   制作实际参数的副本。   相反,对变量的引用   传递作为参数创建和   分配给局部变量使用   在功能中。

obj中,您正在创建一个必须返回的新引用:

createObj