Показать сообщение отдельно
Старый 19.01.2008, 20:54
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 8  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну, вот, пример для чего я иногда использую обращение к prototype:
Код:
AsBroadcaster.initialize(XMLNode.prototype);
XMLNode.prototype.__appendChild = ASnative(253, 4);
XMLNode.prototype.appendChild = function(xn:XMLNode){
	this.broadcastMessage('nodeAdded',xn);
	this.__appendChild(xn);
}
XMLNode.prototype.__resolve = function(p){
	if(!isNaN(p)){
		return this.childNodes[p];
	} else if(p.charAt(0)=='#'){
		return this.attributes[p.substr(1)];
	} else {
		var r_xml:XML = new XML();
		for(var i:Number=0; i<this.childNodes.length; i++){
			if(p==this.childNodes[i].nodeName){
				r_xml.appendChild(this.childNodes[i].cloneNode(true));
			}
		}
		if(r_xml.childNodes.length==1){
			return r_xml.childNodes[0];
		} else if(r_xml.childNodes.length>1){
			return r_xml.childNodes;
		} else {
			return;
		}
	}
}

var _xml:XML = new XML('<data><someNode attr="1"><someOtherNode/></someNode><someNode attr="2"/></data>');
_xml['addListener'](this);
trace(_xml['data']);
trace(_xml['data']['someNode']);
trace(_xml['data'][0]);
trace(_xml['data'][0]['#attr']);
trace(_xml['data'][1]['#attr']);
trace(_xml['data'][0]['someOtherNode']);
function nodeAdded(xn:XMLNode):Void {
	trace('_xml added:\r'+xn+'\rnode\r--------------------');
}
Просто писать свой аналог XMLNode + XML мне лень, да и как-то бесполезно это. Использовать XPath тоже не хочется, т.как очень громоздкий и неудобный. А так вполне пушисто получается =)
*Но я не призываю никого так писать*
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 19.01.2008 в 21:27.