【问题标题】:What exactly is the 'this' reference in as3 classes?as3 类中的“this”引用到底是什么?
【发布时间】:2009-09-01 20:32:23
【问题描述】:

我已经在互联网上上下搜索过,即使是最轻微的“this”参考,也没有找到任何东西!!!似乎根本没有人谈论“这个”。我是一位经验丰富的 C++ 程序员,所以我非常熟悉“this”指针/引用的概念。我的问题是 as3 类中的“this”引用到底是什么?尝试编辑它会引发编译器错误。将它分配给另一个类实例似乎复制了“this”“指向”的内容。我所有试图识别它的尝试都表明它与普通的变量类实例无法区分。我的最终目标是将一个类实例指向一个不同的实例,我一直在尝试确定是否可以使用“this”来简化流程。谢谢!

【问题讨论】:

  • “将一个类实例指向另一个实例” - 您究竟是如何尝试在 C++ 中通过分配给this 来做到这一点的?

标签: apache-flex actionscript-3 reference class this


【解决方案1】:

简短的回答是:不。您将无法重复使用 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"

【讨论】:

    【解决方案2】:

    这是对类的实例的引用。这实际上是为了方便和清晰——即它允许轻松访问代码提示并明确说明您尝试访问的属性/方法。它是一个保留字,因此您不能将其用于其他目的。

    使用与类属性同名的参数的方法可能非常方便,例如:

    package
    {
        public class MyClass
        {
            private var stuff:String;
    
            public function MyClass()
            {
            }
    
            public function setStuff(stuff:String):void
            {
                this.stuff = stuff;
            }
        }
    }
    

    this.stuff 指的是实例属性,而 stuff 指的是已传入的方法参数。如果没有这个,您将对 stuff 的引用不明确,编译器将不知道您要将类属性设置为论据。

    package
    {
        public class MyClass
        {
            private var stuff:String;
    
            public function MyClass()
            {
            }
    
            public function setStuff(stuff:String):void
            {
                stuff = stuff; //NO this KEYWORD!
            }
        }
    }
    

    只需将参数内容设置为自身,就不会发生任何事情。

    许多人认为使用它会产生杂乱丑陋的代码。就我个人而言,我经常使用它,但这取决于个人喜好和您的团队/项目所同意的约定。

    您不能将其重新分配给其他班级。

    【讨论】:

      【解决方案3】:
      猜你喜欢
      • 1970-01-01
      • 2011-08-07
      • 1970-01-01
      • 1970-01-01
      • 2016-12-10
      • 2012-01-26
      相关资源
      最近更新 更多