Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Определение неперечисляемых полей/методов (http://www.flasher.ru/forum/showthread.php?t=211445)

Martoon 02.09.2015 22:25

Определение неперечисляемых полей/методов
 
Вот есть объект
Код AS1/AS2:

var nyanCat = {
        produceNyan: function(){
                trace("nyan")
        },
        __resolve: function(name: String){
                return this[name] = "nyan_" + name
        }
}

Хочется уметь делать так, что
Код AS1/AS2:

for (var i in nyanCat) 
        trace(i)

ничего не выводит. Или хотя бы не выводит __resolve, который ранее не перечислялся. Возможно ли это?

Просто возможность переопределить/добавить пару методов в Object или MovieClip кажется очень заманчивой. Но, раз это "поломает" for..in у всех их наследников, уже как-то и не хочется

samana 02.09.2015 23:26

Цитата:

Сообщение от Martoon (Сообщение 1186304)
Просто возможность переопределить/добавить пару методов в Object или MovieClip кажется очень заманчивой.

По-идее можно ведь создать унаследованные классы и в них переопределить нужные методы.
А чтобы переопределить методы для мувика глобально (без создания подклассов), то в as2 было что-то связано с prototype, но я забыл совсем...

Martoon 02.09.2015 23:50

Вопрос не в том как глобально переопределить, это понятно.
Код AS1/AS2:

Object.prototype.nyan = function(){ ... }

Вопрос в том, можно ли сделать это таким образом, чтобы в for..in этот метод не появлялся (и желательно нативно).

Про унаследованные классы - тоже не совсем по сути вопроса. for..in по объекту такого класса-наследника пройдётся по новому методу

dark256 03.09.2015 09:20

Надо снять с объекта запрещение на перечисление его свойств циклом for-in.

Код AS1/AS2:

for ( var i in _global ) trace( i )
trace("■")
 
            ASSetPropFlags( _global, null, null, 1)
 
for ( var i in _global ) trace( i+" = "+_global[i] )
trace("■")


Martoon 03.09.2015 11:08

То что нужно, спасибо )


Часовой пояс GMT +4, время: 16:06.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.