这一切都通过值,如果你了解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