Странно

Довольно странно, изучая исходники пакета flash , класса boot столкнулся с интересной особенностью.в классе boot есть определение функции

        public static function __instanceof( v : Dynamic, t : Dynamic ) {
                try {
                        if( t == Dynamic )
                                return true;
                        return untyped __is__(v,t);
                } catch( e : Dynamic ) {
                }
                return false;
        }

Но, при вызове не срабатывает - flash.Boot.__instanceof(obj1,typedef1);
Как будто такого метода нет. Но все же он существует. Читал статью про магические последовательности, знаю, что это - магическая последовательность и только через untyped пройдет, но, функция то public, а не private. Не понимаю. Может кто-то подскажет каким образом она ограничена от пользовательского доступа ? Было бы лчень полезной фичой. Доступ даёт только через untyped.

Комментарии

Спасибо

За инфу пасиб, не заметил этой тонкости, но, все же вопрос остался открытым, почему именно так ? Почему через untyped только идет, а так вне области видимости?

Вероятней всего

Вероятней всего, компилятор заранее не знает тип, возвращаемый функцией, потому и не даёт доступа к этому методу, на это же указывает и untyped. Очень порадовало, что класс boot можно дописывать под себя.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <blockcode> <dd>
  • Строки и параграфы переносятся автоматически.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. The supported tag styles are: <foo>, [foo].
  • Use [gist:####] where #### is your gist number to embed the gist.

Подробнее о форматировании

CAPTCHA
Для отсева спамеров)
r
X
N
H
5
t
Enter the code without spaces and pay attention to upper/lower case.