當您創建的任何新對象時,Flash將保留對地方一些內存例如,在我的想象中簡單的Flash運行時環境。
var a:Object = new Object();
Memory Dump:
0000: [Object 0]
a = 0000
變量就像一個指向內存locat的指針離子。
現在,閃存通過引用傳遞對象。例如:
function A(){
var a:Object = new Object();
var b = a;
}
Memory Dump:
0000: [Object 0]
FunctionA.a = 0000 /*These pointers are scoped to the function that declared it*/
FunctionA.b = 0000
我們可以用下面的例子證明了這一點:
var a:MovieClip = new MovieClip;
var b = a;
b.graphics.lineStyle(1);
b.graphics.lineTo(100,100);
addChild(a);
在這個例子中,A和B是相同的東西。對b做任何事情都會做,因爲它們是相同的對象。
但是,這不適用於字符串,數字(數字,int,uint),布爾值。他們是例外,他們通過值。
function A(){
var a:String = "Hello world.";
var b = a + "Hi";
}
Memory Dump:
0000: [String "Hello world."];
0008: [String "Hello world.Hi"];
FunctionA.a = 0000;
FunctionA.b = 0000;
到現在回答你的問題,這裏會發生什麼:
Memory Dump:
0000: [Object TextField 1]
0016: [Object TextField 2]
FunctionA.a = 0000; //This is var a = new TextField
FunctionA.b = 0016; //This is var b = new TextField
FunctionA.c = 0000; //This is like var c = a;
is the number 0000(a) the same as 0016(b)? No.
is the number 0000(a) the same as 0000(c)? Yes.
現在,如果你想看看如果文本相等,則:
如果(a.text = = b.text){
}
這是因爲a.text是一個字符串,並用繩子,閃存檢查不是由地道,但有價值。
我希望我不是太複雜了整個事情,你明白爲什麼:)
'-1'問題是問兩個對象,每個對象的兩個屬性不是值之間的關係。 – Marty