我总是觉得这很有趣,但还没有完全理解它。上这堂课:
package
{
public class SomeClass
{
private var _myvar:String = "hello";
public static function sayHello():void
{
trace(_myvar);
}
}
}
我们知道,除非我将_myvar
声明为private static var _myvar
1120:访问未定义的属性_myvar。
我不完全理解为什么_myvar
不在范围内,除非它是static
。任何人都能提供一个易于理解的解释吗?
答案 0 :(得分:3)
由于_myvar
不是静态的,因此它是附加到SomeClass
实例的属性,即每次创建新SomeClass
时它只有意义。
相反,static
属性附加到Class对象,它只存在一次,并且不依赖于创建的SomeClass的每个实例。
因此,当您尝试从_myvar
转到static function sayHello
时,它与调用this._myvar
相同,但您只有一个静态属性且可以多个实例,在这种情况下,this
的值应该是多少?