ExtJS, 相信现在已有很多国内公司用她来做管理界面了, 而 ExtJS 很难学吗 ? 其实她就是JavaScript支持面向对象的一个UI框架,如果你去看ExtJS 源码, 你会发现她其实并不怎么深奥(除了部分代码);下面看一下ExtJS源码里的apply和applyIf方法:
- 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.applyIf = function (o, c){
- if (o){
- for ( var p in c){
- if (Ext.isEmpty(o[p])){
- o[p] = c[p];
- }
- }
- }
- return o;
- }
根据这行代码,我们知道apply和applyif 都是把属性或方法直接复制到对象的内部, 而不是 对象的prototype里,
其实两方法的作用差不多,apply和applyIf 的作用都是给对象o添加 对象c里有的方法或属性。 只是咧, applyIf() 不会覆盖对象o里原有的方法或属性, 而apply()则会覆盖原有的方法或属性。
- var obj = {
- name : "aby" ,
- age : 22
- };
- var cfg= {
- sex : '男' ,
- name : 'anya'
- };
- Ext.applyIf(obj, cfg);
- alert(obj.name); // return aby
- alert(obj.sex); // return 男
- Ext.apply(obj, cfg);
- alert(obj.name); // return anya
- alert(obj.sex); // return 男