我在互联网上上下搜索,即使是最轻微的提及“这个”参考,也发现没有!似乎没有人谈论'这个'。我是一位经验丰富的c ++程序员,所以我对'this'指针/引用的想法非常熟悉。我的问题是as3类中的'this'引用究竟是什么?尝试编辑它会引发编译器错误。将它分配给另一个类实例似乎复制了“this”指向的内容。我对ID的所有尝试都表明它与普通变量类实例无法区分。我的最终目标是将一个类实例指向一个不同的实例,我一直在努力确定我是否可以通过'this'来简化该过程。谢谢!
答案 0 :(得分:2)
简短的回答是:否。您将无法重新使用this
指向同一班级的其他实例。
AS3中的this
关键字的行为方式与C#中的相同:在类中使用时,它始终引用对象的当前实例。
public class Cat
{
var name:String = "";
public function getName():String
{
return this.name;
}
public function setName(name:String):void
{
this.name = name;
}
}
var joe:Cat = new Cat();
joe.setName("Joe"); //joe.getName() will return "Joe"
var john:Cat = new Cat();
john.setName("John"); //john.getName() will return "John"
答案 1 :(得分:2)
这是对班级实例的引用。它实际上是为了方便和清晰 - 它允许轻松访问代码提示并明确说明您尝试访问的属性/方法。这是一个保留字,因此您不能将其用于其他目的。
对于采用与类属性同名的参数的方法非常方便,例如:
package
{
public class MyClass
{
private var stuff:String;
public function MyClass()
{
}
public function setStuff(stuff:String):void
{
this.stuff = stuff;
}
}
}
this.stuff指的是实例属性,而stuff指的是已经传入的方法参数。如果没有这个,你会有一个不明确的东西引用,编译器不会知道你想要将类属性设置为论证。
package
{
public class MyClass
{
private var stuff:String;
public function MyClass()
{
}
public function setStuff(stuff:String):void
{
stuff = stuff; //NO this KEYWORD!
}
}
}
只会将参数设置为自身,不会发生任何事情。
许多人认为使用它会造成混乱的丑陋代码。就个人而言,我使用它很多,但这是个人品味和团队/项目同意的惯例。
你无法将其重新分配给另一个班级。
答案 2 :(得分:0)