Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex as3:此关键字的用法_Apache Flex_Actionscript 3 - Fatal编程技术网

Apache flex as3:此关键字的用法

Apache flex as3:此关键字的用法,apache-flex,actionscript-3,Apache Flex,Actionscript 3,我只是想知道什么时候需要使用关键字this.somevar而不是somevar 我通常不会在以下情况下使用此选项: 我已经为一个班级做了一个单独的var 我引用它是为了将它用作该类的本地变量 对吗?或者,这不仅仅是一种样式吗?如果在对象内部使用它,它将指对象本身。下面是一个您将使用它的示例: package { public class foo { private var variable:uint; public function foo(va

我只是想知道什么时候需要使用关键字
this.somevar
而不是
somevar

我通常不会在以下情况下使用此选项:

  • 我已经为一个班级做了一个单独的var
  • 我引用它是为了将它用作该类的本地变量

  • 对吗?或者,这不仅仅是一种样式吗?

    如果在对象内部使用它,它将指对象本身。下面是一个您将使用它的示例:

    package
    {
        public class foo
        {
            private var variable:uint;
    
            public function foo(variable:uint)
            {
                this.variable = variable;
            }
        }
    }
    

    如果您在具有相同名称的参数的函数中,并且希望引用成员变量,则通常只需要使用this.varname。成员变量是否私有对必须使用“this”没有任何影响。

    如前所述,您不需要在非常简单的情况下使用此变量,您需要从类成员方法引用类成员变量,例如:

    public function myClassMethod() : void
    {
      // "this" is redundant here, as it is implied if omitted
      this.myPrivateOrPublicVariable = 123;
    }
    
    但请注意,在某些情况下,它(在程序中遇到它时进行计算,而不是在实例化时进行计算)并不引用编写它的类。更具体地说,当您在一个函数中使用它时,就会发生这种情况,该函数将使用以下方法调用:。此方法允许调用方指定此方法将引用的对象,并且通常在回调中使用,例如在tweening引擎中

    // Call myFunction(listOfArguments[0], listOfArguments[1] ...), 
    // with this referring to objectReferredToByThis.
    myFunction.apply(objectReferredToByThis, listOfArguments);
    
    下面是一个流行的tweening引擎Tweener的示例,其中默认行为是将其引用到tweened对象(即MovieClip _mc),而不是引用编写它的类的实例(即MyClass)


    在上面的代码中,使用它是必要的,因为我们希望显式地指示运行时修改MovieClip(_mc)的可见状态。如果我们没有使用这个,可见引用将引用MyClass.visible,因为函数关闭。

    首先,如何开始使用
    这个
    关键字,因为它可以帮助您快速识别代码中的变量是局部的还是全局的(方法或类拥有的)。您需要的只是一段代码,您可以在其中看到
    这个
    ,然后立即意识到这是一个全局可见的类变量,而不是对目标定义进行额外的滚动。

    在其他答案中添加一些内容:在ActionScript 3中,您可以通过两种方式引用成员变量和函数:

    // 1. the normal way
    obj.var = 5;
    obj.func();
    
    // 2. the auxiliary way
    obj["var"] = 5;
    obj["func"]();
    
    这似乎毫无意义,但在某些情况下,例如,将字符串连接成各种组合以在对象中使用随机、动态指定的变量或函数可能会很有用,如:

    private function someFunc():void
    {
        obj[randomFuncStr()]();
    }
    
    private function randomFuncStr():String
    {
        // randomly decide on a function to call and return its name as a String
    }
    
    但是,如果您想使用字符串访问
    中的变量或函数,该怎么办?这不起作用:

    "var" = 5; // error
    "func"(); // error
    
    所以你要做的是:

    this["var"] = 5; // the this keyword is good for something after all!
    this["func"]();  // " " " " " " " " "
    
    其他人已经提到了下一个原因,但我第一次在AS3中认真对待
    this.var
    this.func()
    (我通常仍然轻视它的用法)是在重写
    UIComponent.setLayoutBoundsSize()时,它有一个名为
    width
    的参数和一个名为
    height
    的参数。UIComponent也使用这些名称作为属性,我不喜欢在重写方法时更改参数名称。比如说
    this.width=x或<代码>此高度=y突然变得相关。除了这两种情况外,我认为在内部引用同一对象中的变量或函数时没有理由使用
    this


    作为补充说明,如果由于API的构造方式或其他一些非常好的原因(尽量避免自己设置这样的东西),您不得不做下一件小事,有时,您可能会将
    作为参数传递给函数或需要引用回调用对象的对象。

    我是说,我认为这种情况无论如何都会发生。见下面的评论;我发现它很有用。谢谢谢谢你详细介绍这件事。我很感谢你的澄清。嗯,我不明白为什么在tweener的例子中。引用movieclip。@Richards,之所以引用,是因为调用方(Tweener内部)指定tweening目标由“this”变量引用。请参阅有关Function.apply()的文档。干杯
    this["var"] = 5; // the this keyword is good for something after all!
    this["func"]();  // " " " " " " " " "