Беларусь, рогачёв |
Классы
Что прячется в системных объектах
Теперь, конечно, трудно удержаться от того, чтобы снять флаги hidden со всех полей разнообразных системных объектов и вывести их при помощи for...in. Для начала проделаем это с объектом _global, а также посмотрим, какие методы наследуются во все объекты из Object.prototype. Вот код, который выводит в консоль все интересующие нас сведения.
trace("----------------------"); trace("|||||||||| Object.prototype |||||||||||"); trace("----------------------"); ASSetPropFlags(Object.prototype, null, 0, 1); for (var name in Object.prototype) trace(name); trace("----------------------"); trace("|||||||||| _global |||||||||||"); trace("----------------------"); ASSetPropFlags(_global, null, 0, 1); for (var name in _global) trace(name);
В результате получаем вот что:
---------------------- |||||||||| Object.prototype ||||||||||| ---------------------- toLocaleString isPropertyEnumerable isPrototypeOf hasOwnProperty toString valueOf addProperty unwatch watch constructor ---------------------- |||||||||| _global ||||||||||| ---------------------- CustomActions MMSave Cookie System Accessibility Video Stage TextFormat TextField Button Key Mouse Selection XML XMLNode Sound Math Array String Date Boolean Number o clearInterval setInterval isFinite isNaN updateAfterEvent trace parseFloat parseInt unescape escape ASSetNative ASSetPropFlags LocalConnection SharedObject Microphone Camera NetStream NetConnection Color AsBroadcaster XMLSocket LoadVars MovieClip Infinity NaN Function Object ASconstructor ASnative
Мы видим, что те методы, которые мы можем найти в каждом объекте, действительно происходят из Object.prototype. Кроме того, мы видим там и несколько недокументированных функций. Огромное число как документированных, так и недокументированных объектов и функций мы находим в объекте _global. В частности, именно там мы видим ссылки на конструкторы самых важных классов, таких, как Number, String, Array, MovieClip и т.д. Даже функция ASSetPropFlags, с помощью которой мы обнаружили все это хозяйство, находится там. Мы не станем здесь подробно описывать поведение каждой их недокументированных функций, ведь эта книга ни в коей мере не является справочником. Тем, кто интересуется подробностями, порекомендуем ресурс http://web.archive.org/web/20040603171453/chattyfig.figleaf.com/flashcoderswiki/index.php?Undocumented+Features (это архивная копия документа с ныне закрытой wiki-конференции flashcoders-wiki). Также можно зайти на сайт FlashGuru http://www.flashguru.co.uk/tutorials.php. По этому адресу расположен список статей, в котором можно найти многие из обнаруженных нами недокументированных вещей. Также можно воспользоваться поиском на сайте Macromedia - многие классы и функции из недокументированных возможностей Flash MX превратились во вполне стандартные свойства системы Flash MX 2004, в описании которой вы сможете с ними познакомиться.