Actionscript 3 AS3:静态范围问题
我一直觉得这很有趣,但还没有完全理解它。参加本课程:Actionscript 3 AS3:静态范围问题,actionscript-3,static,scope,Actionscript 3,Static,Scope,我一直觉得这很有趣,但还没有完全理解它。参加本课程: package { public class SomeClass { private var _myvar:String = "hello"; public static function sayHello():void { trace(_myvar); } } } 我们知道,除非我将\u myvar声明为私有静态var\u m
package
{
public class SomeClass
{
private var _myvar:String = "hello";
public static function sayHello():void
{
trace(_myvar);
}
}
}
我们知道,除非我将\u myvar
声明为私有静态var\u myvar
1120:访问未定义的属性\u myvar
我不完全理解为什么
\u myvar
不在范围内,除非它是静态的。有人能提供一个简单易懂的解释吗?因为\u myvar
不是静态的,它是一个附加到SomeClass
实例的属性,也就是说,它只在每次创建新的SomeClass
时才有意义
相反,静态
属性附加到类对象,它只存在一次,并且不依赖于所创建的SomeClass的每个实例
因此,当您试图从静态函数sayHello
中访问\u myvar
时,这与调用此函数相同。\u myvar
但是您只有一个静态属性,并且可以在应用程序的整个生命周期内创建多个实例,在这种情况下,this
的值应该是多少?这更有意义-因为没有创建SomeClass的实例,\u myvar不存在/还没有创建。听起来对吗?@Marty Wallace,对,就是这样