夢幻之旅

          DEBUG - 天道酬勤

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
          apply及applyIf方法都是用于實現把一個對象中的屬性應用于另外一個對象中,相當于屬性拷貝。不同的是apply將會覆蓋目標對象中的屬性,而applyIf只拷貝目標對象中沒有而源對象中有的屬性。
          apply方法的簽名為“apply( Object obj, Object config, Object defaults ) : Object”,該方法包含三個參數,第一個參數是要拷貝的目標對象,第二個參數是拷貝的源對象,第三個參數是可選的,表示給目標對象提供一個默認值。可以簡單的理解成把第三個參數(如果有的話)及第二個參數中的屬性拷貝給第一個參數對象。看下面的代碼:

              <script>

                 Ext.onReady(function(){

                     var b1 = {

                        p1:"p1 value",

                       

                        p2:"p2 value",

                       

                        f1:function(){alert(this.p1)},

                       

                        f2:function(){alert(this.p2)}

                     };

                    

                     var b2 = new Object();

                    

                     b2.p1 = "b2 value";

                    

                     Ext.apply(b2,b1);

                    

                     b2.f1(); // 這個挺有意思,不僅屬性會復制,b1中的f1方法也可以被復制和使用

          // ( 有點費話,因為f1f2就是以屬性的形式生命的 )

                    

                     b2.f2();

                    

          //會使得b2中包含一個p3的屬性,值為"p3 value"

                     Ext.apply(b2,b1,{p3:"p3 value"});

           

                

                     alert(b2.p3)     

           

                 });

              </script>


          在上面的代碼中,Ext.apply(b2,b1)這一語句把b1的屬性拷貝到了b2對象中,因此調用b2的f1方法可以彈出"p2 value"的提示信息。盡管b2對象已經包含了p2屬性值,但拷貝后該屬性值會被覆蓋。可以在調用apply方法時,在第三個參數中指定拷貝屬性的默認值,比如下面的代碼:
          Ext.apply(b2,b1,{p3:"p3 value"});
          alert(b2.p3);
          這樣會使得b2中包含一個p3的屬性,值為"p3 value"。
          applyIf方法的功能跟apply一樣,只是不會拷貝那些在目標對象及源對象都存在的屬性。比如把前面演示apply方法的代碼改成applyIf,如下:
          Ext.applyIf(b2,b1);
          b2.f1();
          由于b2中已經存在了p2屬性,因此,b2.f1()方法中引用this.p2的時候,得到的是"b2 value",而不是在b1中定義的"p2 value"。
          posted on 2011-07-05 11:13 HUIKK 閱讀(671) 評論(0)  編輯  收藏 所屬分類: EXT
          主站蜘蛛池模板: 长顺县| 霸州市| 宁都县| 大关县| 大荔县| 星子县| 雅安市| 平谷区| 景谷| 泗洪县| 呼玛县| 江都市| 阜阳市| 乌拉特后旗| 小金县| 祁阳县| 新乡市| 泰和县| 锡林浩特市| 金川县| 宜春市| 凤城市| 观塘区| 玉溪市| 华亭县| 江安县| 海伦市| 蓬安县| 井陉县| 永兴县| 方正县| 巫溪县| 伊宁市| 太仓市| 青州市| 灵川县| 阳朔县| 西和县| 静宁县| 西城区| 柯坪县|