![]() |
Рефлекшн
для тех кто не знает Reflection ето механизм выковыривания
информации о членах у обьекта в рунтайме Иногда помогает при отладке или при обследовании чужого кода ------Reflection.as--------- function PrintMembers(obj) { var info_array = GetTypeInfo(obj); Trace("\nFunctions:") for(var i=0;i<info_array.length;i++) if(info_array[i].memberType=="function") Trace("\tmemberName="+info_array[i].memberName+" , "+ "memberType="+info_array[i].memberType+" , "+ "memberValue="+info_array[i].memberValue ); Trace("\nFields:") for(var i=0;i<info_array.length;i++) if(info_array[i].memberType!="function") Trace("\tmemberName="+info_array[i].memberName+" , "+ "memberType="+info_array[i].memberType+" , "+ "memberValue="+info_array[i].memberValue ); } function SetParentClass(child,parent) { var exec="child"; while(eval(exec+".__proto__.__proto__")) exec+=".__proto__"; (eval(exec)).__proto__=parent; } function TypeInfo(_memberName,_memberType,_memberValue) { this.memberName = _memberName; this.memberType = _memberType; this.memberValue = _memberValue; } function GetTypeInfo(type) { var dummy = new LoadVars(); SetParentClass(type,dummy); var result_array=new Array(); var dummy_array = type.toString().split("&"); for(var i=0;i<dummy_array.length;i++) { var item_str = dummy_array[i]; var mName=unescape(item_str.substring(0,item_str.indexOf("=",2))); result_array.push(new TypeInfo(mName,typeof(eval("type."+mName)),eval("type."+mName))); } return result_array; } ---------------------------- пример использования кидаем календарь на мувик даем иму имя например mcalendar пишем #include "Reflection.as" PrintMembers(mcalendar); если ктонить реализовывал рефлекшн по другому (я иначе не смог) плиз пишите с удовольствием посмотрю кстати некоторые функции используются у меня не только для выковыривания членов обьектов вот например функция function SendReceive(_url_,callback,obj) { var _send = new LoadVars(); _send.OnLoad=callback; SetParentClass(obj,_send); obj.sendAndLoad(_url_, obj, "POST"); } пример использования SendReceive(_root._path,parseRes,{uid:_root.userID, key:_root.guidKey, opID:"receive" }); я думаю смысл понятен(весь прикол в третьем параметре) Всем счастливо..... |
| Часовой пояс GMT +4, время: 02:17. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.