
любопытно, я не обращал внимания, что idMap тоже мутант.
это такая же тема, как с объектом XMLNode.attributes или с тем, который возвращает метод TextFormat.getTextExtent()
такие объекты не имеют ссылок на родительский класс. хотя, казалось бы, ВСЕ классы должны наследовать по крайней мере от Object.
иллюстрация:
1
2
3
4
5
6
TXML = new XML("<a id='1' />");
trace(TXML.firstChild.attributes); // [type Object]
trace(TXML.firstChild.attributes+"!"); // undefined!
trace(TXML.firstChild.attributes.__proto__); // undefined
trace(TXML.firstChild.attributes.constructor); // undefined
при сложении аргументов разных типов делается автоматическое приведение их к одному типу - к строке или к числу, по ситуации.
в данном случае нужно привести к строке.
для этого используется метод toString() у приводимого объекта.
а у объектов XML.nodeName, XML.idMap и еще некоторых нет своего метода toString() и в добавок нет ссылок __proto__ и constructor, что не позволяет им использовать стандартный toString() класса Object.
такие бесформенные коробочки с данными без прошлого и будущего. :))
один вопрос только остается - как trace() умудряется сделать "[type Object]" когда мы трейсим объект idMap сам по себе. видимо внутренний механизм самого трэйса позволяет.
записка на память:
http://flash-mx.ru/forum/topic_show.pl?tid=1186