/** @name Edo.managers.SystemManager @class @single @description 组件系统管理器 @example */ Edo.managers.SystemManager = { all: {}, /** @name Edo.managers.SystemManager#register @function @static @param {Object} cmp 组件对象(所有从Edo.core.Component派生的类对象) @description 将组件加入组件对象池 */ register: function(c){ if(!c.id) throw new Error("必须保证组件具备id"); var o = Edo.managers.SystemManager.all[c.id]; if(o) throw new Error("已存在id为:"+o.id+"的组件"); Edo.managers.SystemManager.all[c.id] = c; if(c.id == 'window') if(window[c.id]) throw new Error("不能设置此ID:"+o.id); window[c.id] = c; }, /** @name Edo.managers.SystemManager#unregister @function @static @param {Object} cmp 组件对象(所有从Edo.core.Component派生的类对象) @description 将组件从组件对象池注销 */ unregister: function(c){ delete Edo.managers.SystemManager.all[c.id]; //if(c == WINDOW[c.id]) WINDOW[c.id] = null;//非常耗性能! //WINDOW[c.id] = null; }, /** @name Edo.managers.SystemManager#destroy @function @static @description 销毁所有组件(页面关闭情况等特殊场合使用) */ destroy: function(c){ if(c){ if(typeof c === 'string') c = Edo.managers.SystemManager.all[c]; if(c) c.destroy(); }else{ var un = Edo.managers.SystemManager.unregister; var all = Edo.managers.SystemManager.all; //1)找出所有的topContainer顶级容器 var tops = []; for(var id in all){ var o = all[id]; if(!o.parent) tops.push(o); } var sss = new Date(); for(var i=0,l=tops.length; i