AS3:静态范围问题

时间:2011-05-25 07:19:23

标签: actionscript-3 static scope

我总是觉得这很有趣,但还没有完全理解它。上这堂课:

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。任何人都能提供一个易于理解的解释吗?

1 个答案:

答案 0 :(得分:3)

由于_myvar不是静态的,因此它是附加到SomeClass实例的属性,即每次创建新SomeClass时它只有意义。

相反,static属性附加到Class对象,它只存在一次,并且不依赖于创建的SomeClass的每个实例。

因此,当您尝试从_myvar转到static function sayHello时,它与调用this._myvar相同,但您只有一个静态属性且可以多个实例,在这种情况下,this的值应该是多少?