這一切都通過值,如果你瞭解C語言編程,你將熟悉指針的概念。
想想指針指向內存中的東西,所有的變量名「鮑勃(BOB =新的人();)」本質上是指針和你一起工作。
現在,當你聲明一個函數,因爲它們都是通過價值
function Test(a:Object, b:Object):void {
a = b;
}
你可以想想這兩個「A」和「B」是新指針,所以只能在「測試」功能做「a」和「b」都存在並指向記憶中的某些東西。
因此,讓我們用它
var s1:Sprite = null;
var s2:Sprite = new Sprite;
Test(s1,s2);
所以S1和S2的指針總是指向「空」和「一個新的Sprite在內存」分別爲,除非它們被修改爲他們的「範圍內的S1和S2 「< - 在嘗試解決此問題之前,請確保您瞭解變量範圍。
和函數中,我們現在有兩個新指針「一」指向「無效」和「B」指向「同一精靈在內存中爲S2」。所以由於對象和數組本質上是指針的集合,並且只有兩個新指針由函數創建,用於使用「a」或「b」的任何屬性/暴露變量「指向內存中數據的指針」仍然與「s1」和「s2」完全一樣,並且是完全相同的指針。
所以當「一」被設置爲「B」,真正的函數內所發生的一切是「一」,現在指針指向同樣的事情爲「B」。但是「s1」和「s2」仍然指向他們之前指出的內容。
!!!! 如果通過參考你不能將「a」和「b」想成新指針,它們本身實際上就是「s1」和「s2」,除非你把它們寫成「a」和「b」 」。
這也是我的問題。我要發送的實際變量(B在這個例子中)我的功能,並獲得由function.http的這種變化://stackoverflow.com/questions/13188723/pass-actual-variable-object-to-a-function – 2012-11-02 03:31:31
清楚的是,對象類型是不相關的,因爲這個主題引用了調用約定。 「ByRef(一個Visual Basic關鍵字):指定一個參數被傳遞,被調用的過程可以改變調用代碼中參數底層的一個變量的值。」 AS3不支持;它總是傳遞參數「ByVal」。將新對象分配給函數中的參數不會導致傳遞給該函數參數的變量指向新對象。通常可以修改對象本身,但傳遞的變量不能在func內修改。 – Triynko 2013-12-12 23:39:00