决定学习ExtJs的源代码,从Ext.js文件开始。
Ext.apply = function(o, c, defaults){ // no "this" reference for friendly out of scope calls if(defaults){ Ext.apply(o, defaults); } if(o && c && typeof c == 'object'){ for(var p in c){ o[p] = c[p]; } } return o; };
这是Ext用于对象浅复制的函数。我根据自己的习惯重写了一个:
/** *实现浅复制 *dest可为空 *@param{} src 数据来源 *@param{} dest 目的地 * */ function copy(src, dest){ if(!dest){ dest={}; } for(var p in src){ dest[p]=src[p] } return dest; }
不明白if(defaults){Ext.apply(o, defaults);}有何用处,所以没加上,等自己明白时再补回去也不迟。
感觉自己改写后的用着应会更方便, 因为函数可以有两调用方式。方式一:var o2=copy(src);方式二:var o2={}; copy(src,o2); 这两种调用方式是等效的。但对于第二种调用方式要注意一定要将o2初始化为对象,否则这个调用就白执行了。推荐使用前者。
使用extjs已经有两个月了,感觉到了提升上的瓶颈,所以转向它的源代码。刚开始阅读,便找了个最简单的开始,权当是增强自信。
[/size]