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
我通常不会在以下情况下使用此选项:
对吗?或者,这不仅仅是一种样式吗?如果在对象内部使用它,它将指对象本身。下面是一个您将使用它的示例:
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"](); // " " " " " " " " "