代码之家  ›  专栏  ›  技术社区  ›  Maksim Vi.

使传递给函数的对象无效

  •  1
  • Maksim Vi.  · 技术社区  · 14 年前

    我对ActionScript3中的对象有以下问题:

    var o:Object = new Object();
    destroyObject(o);
    trace(o); // [object Object]
    
    function destroyObject(obj:Object):void{
       obj = null; 
       trace(obj); // null
    }
    

    因为对象在AS3中是通过引用传递的,所以我假设前面的代码会更改 o null 但事实并非如此。 有人能解释一下“为什么”吗?

    谢谢。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Marcelo Cantos    14 年前

    对象是通过引用传递的,但引用本身是通过值传递的。声明 obj = null 设置参数 obj 为空,这意味着 OBJ 不再引用对象,但对象本身仍然存在,并且仍由变量引用 o 什么时候? destroyObject 返回。