这都是值,如果您了解 C 编程,您将熟悉指针的概念。
将指针视为指向内存中的某些内容,并且所有变量名称“bob from (bob = new person();)”本质上都是您使用的指针。
现在,当你声明一个函数时,因为它们都是 By Value
function Test(a:Object, b:Object):void {
a = b;
}
您可以认为“a”和“b”都是新指针,因此只有在“Test”函数中“a”和“b”才存在并指向内存中的某些内容。
所以让我们使用它
var s1:Sprite = null;
var s2:Sprite = new Sprite;
Test(s1,s2);
因此 s1 和 s2 指针将始终分别指向“null”和“内存中的新 Sprite”,除非它们在“Scope”内被修改为 s1 和 s2 <-在尝试解决之前请确保您了解变量范围这。
在函数中,我们现在有两个新指针“a”指向“null”,“b”指向“内存中与 s2 相同的精灵”。所以由于对象和数组本质上是指针的集合,并且函数只创建了两个新指针以供使用“a”和“b”任何属性/公开变量“指向内存中数据的指针”“a”或“b”仍然与“s1”和“s2”的指针完全相同,并且是完全相同的指针。
所以在函数中,当“a”被设置为“b”时,实际上所发生的只是“a”指针现在指向与“b”相同的东西。但是“s1”和“s2”仍然指向它们之前指向的东西。
!!!!如果这是通过引用,您将无法将“a”和“b”视为新指针,它们实际上将是“s1”和“s2”本身,除非您将它们写为“a”和“b” .