Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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
Actionscript 3 AS3:静态范围问题_Actionscript 3_Static_Scope - Fatal编程技术网

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,对,就是这样