2010-10-05 98 views
1

我有基於ActionScript3對象以下問題:抵消對象傳遞給函數

var o:Object = new Object(); 
destroyObject(o); 
trace(o); // [object Object] 

function destroyObject(obj:Object):void{ 
    obj = null; 
    trace(obj); // null 
} 

由於對象是通過在AS3引用傳遞我認爲前面的代碼會改變onull,但它不」噸。 有人能解釋我爲什麼嗎?

謝謝。

回答

2

對象通過引用傳遞,但參考本身由值來傳遞。 obj = null設置參數obj爲null的語句,這意味着obj不再引用的對象,但對象本身仍然存在,並且仍然由可變odestroyObject返回引用。

+0

謝謝,換句話說,我不能讓它在函數內部工作,它必須在外面? – 2010-10-05 23:59:23

+2

正確。當對象的所有引用都被刪除時,該對象將被釋放,因此您必須先刪除「o」引用。 – UltimateBrent 2010-10-06 00:32:20

+1

我認爲它被稱爲「通過價值傳遞」,與Java相同。 – 2010-10-06 01:13:45