actionscript-3 - 类似于as3中指针的概念?

标签 actionscript-3 oop pointers reference

as3中有指针的概念或类似的东西吗?

我用了一个概念

var mc1:MovieClip;
var mc2:MovieClip();
var mcCommon:MovieClip = new MovieClip();
mcCommon["myptr"] = mc1;
mcCommon["myptr"] = mc2;

我在哪里可以阅读和了解有关此概念的更多信息。我想得到简单的答案,因为我不是 as3 的专家。我还在学习。

最佳答案

我已经有一段时间没有使用专门使用指针的语言编写代码了,我不确定这是否正是您要问的,但这里尝试回答您的问题:

在 AS3 中,对对象的变量引用始终是指针,但基本类型(字符串、数字、整数和 bool 值)除外,它们始终仅按值。

因此,对于基本类型,您会得到“按值”行为:

var a:String = "hello";
var b:String = a;  // b is a new String, a clone of a
b += " world";
trace(a);  // hello
trace(b);  // hello world

A 对 b 的修改并没有修改 a 变量。或者也可以说第 2 行之后 a 和 b 是对同一个 String 的引用,但是 += 运算符创建了一个新的 String 并将其分配给 b。如果您查看 String documentation ,请注意,没有一个成员函数实际就地修改字符串,它们都返回新的字符串。

您将看到使用简单的非指针参数的函数调用的相同行为:

function wont_modify(word:String):String
{
  word += " world";
  return word;
}
var a:String = "hello";
trace(wont_modify(a));  // hello world
trace(a); // hello

但是,对于非简单类型,访问是通过引用(在其他语言中称为指针):

var a:Array = [1, 2, 3];
var b:Array = a;  // b is now a reference to a
b.push(4);
trace(a);  // [1, 2, 3, 4]
trace(b);  // [1, 2, 3, 4]

如果您希望像 String 这样的简单类型具有“类指针”行为,它必须是类指针对象的成员,您可以为其传递引用:

function will_modify(obj:Object):void
{
  obj.a += " world";
}
var obj:Object = { a:"hello" }
will_modify(obj);
trace(obj.a);  // hello world

字符串和数字实际上确实扩展了对象,但所有运算符和函数调用都按值而不是按引用来处理它们。

关于actionscript-3 - 类似于as3中指针的概念?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8982970/

相关文章:

actionscript-3 - Flash 隐私弹出对话框缺少 "Remember"复选框

python - 如何在对象的属性(也是对象)属性发生变化时自动调用对象的方法?

c++ - 如何在另一边创建重载 +

c - 带有不需要的零的链表

c - 为什么这段代码能够访问空指针而不会导致崩溃?

actionscript-3 - 我们可以在 Actionscript 中使用已编译的 Haxe swf 的 swc 作为普通库吗?

flash - AS3 - 未定义属性的访问(静态变量)

flash - AS3 掩码奇怪的结果

c++ - 在列表中调用子对象

C++指针内存使用