Ext的apply和applyIf的区别

ExtJS, 相信现在已有很多国内公司用她来做管理界面了, 而 ExtJS 很难学吗 ? 其实她就是JavaScript支持面向对象的一个UI框架,如果你去看ExtJS 源码, 你会发现她其实并不怎么深奥(除了部分代码);下面看一下ExtJS源码里的apply和applyIf方法:

  1. Ext.apply =  function (o, c, defaults){  
  2.     // no "this" reference for friendly out of scope calls   
  3.     if (defaults){  
  4.         Ext.apply(o, defaults);  
  5.     }  
  6.     if (o && c &&  typeof  c ==  'object' ){  
  7.         for ( var  p  in  c){  
  8.             o[p] = c[p];  
  9.         }  
  10.     }  
  11.     return  o;  
  12. };  
  13.   
  14.   
  15. Ext.applyIf = function (o, c){  
  16.             if (o){  
  17.                 for ( var  p  in  c){  
  18.                     if (Ext.isEmpty(o[p])){  
  19.                         o[p] = c[p];  
  20.                     }  
  21.                 }  
  22.             }  
  23.             return  o;  
  24.         }  

根据这行代码,我们知道apply和applyif 都是把属性或方法直接复制到对象的内部, 而不是 对象的prototype里,

其实两方法的作用差不多,apply和applyIf 的作用都是给对象o添加 对象c里有的方法或属性。 只是咧, applyIf() 不会覆盖对象o里原有的方法或属性, 而apply()则会覆盖原有的方法或属性。

 

  1. var  obj = {  
  2.     name : "aby" ,  
  3.     age  : 22  
  4. };  
  5.     
  6. var  cfg= {  
  7.     sex : '男' ,  
  8.     name : 'anya'   
  9. };  
  10.   
  11. Ext.applyIf(obj, cfg);  
  12.   
  13. alert(obj.name);   //  return aby   
  14.   
  15. alert(obj.sex);    // return 男   
  16.   
  17. Ext.apply(obj, cfg);  
  18.   
  19. alert(obj.name);   //  return anya   
  20.   
  21. alert(obj.sex);    // return 男  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值