AS3: Статический объем вопроса - PullRequest
1 голос
/ 25 мая 2011

Я всегда находил это интересным и до сих пор не сумел полностью понять это. Возьми этот класс:

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 Ответ

3 голосов
/ 25 мая 2011

Поскольку _myvar не является статичным, это свойство, которое прикреплено к экземпляру SomeClass, т.е. оно имеет значение только каждый раз, когда вы создаете новый SomeClass.

Напротив, свойство static присоединено к объекту Class, оно существует только один раз и не зависит от каждого созданного экземпляра SomeClass.

Таким образом, когда вы пытаетесь достичь _myvar с вашего static function sayHello, это то же самое, что и вызов this._myvar, но у вас есть только одно статическое свойство и вы можете создать несколько экземпляров Какова должна быть величина this в этом случае в течение срока действия вашего приложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...