Ext源码分析:解析Ext的命名空间,Ext.namespace

xiaoxiao2026-03-14  9

初学者一定对Ext大量的命名空间感到不解,其实是非常简单的东西,看完这篇文章就明白了。 比如就用Ext.panel,Ext.layout.BorderLayout这2个命名空间来说吧,Ext是这样创建的: Ext = {}; Ext.panel = {}; Ext.layout = {}; Ext.layout.BorderLayout = {}; 说穿了是啥?对象里面套对象而已,很简单吧?我们来看看namespace的方法 1.namespace : function(){ 2. var a=arguments, o=null, i, j, d, rt; 3. for (i=0; i<a.length; ++i) { 4. d=a[i].split("."); 5. rt = d[0]; 6. eval(‘if (typeof ‘ + rt + ‘ == "undefined"){‘ + rt + ‘ = {};} o = ‘ + rt + ‘;‘); 7. for (j=1; j<d.length; ++j) { 8. o[d[j]]=o[d[j]] || {}; 9. o=o[d[j]]; 10. } 11. } 12. }, 13. …… 14. …… 15. Ext.ns = Ext.namespace; 16. …… 17. …… 18. Ext.ns("Ext", "Ext.util", "Ext.grid", "Ext.dd", "Ext.tree", "Ext.data", "Ext.form", "Ext.menu", "Ext.state", "Ext.lib", "Ext.layout", "Ext.app", "Ext.ux"); 首先通过arguments得到namespace方法的参数,然后用点号分割成数组,依次把空对象递归赋值进去,上面就是系统内建的命名空间
转载请注明原文地址: https://www.6miu.com/read-5045901.html

最新回复(0)