Ext.apply 詳解--簡單易懂

來源:互聯網
上載者:User

apply的用法:         Ext中apply及applyIf方法的應用 apply及applyIf方法都是用於實現把一個對象中的屬性應用於另外一個對象中,相當於屬性拷貝。 不同的是apply將會覆蓋目標對象中的屬性,而applyIf只拷貝目標對象中沒有而來源物件中有的屬性。 apply方法的簽名為“apply( Object obj, Object config, Object defaults ) : Object”, 該方法包含三個參數,第一個參數是要拷貝的目標對象,第二個參數是拷貝的來源物件,第三個參數是可選的,表示給目標對象提供一個預設值。可以簡單的理解成把第三個參數(如果有的話)及第二個參數中的屬性拷貝給第一個參數對象。看下面的代碼: var b1={ p1:"p1 value", p2:"p2 value", f1:function(){alert(this.p2)}}; var b2=new Object(); b2.p2="b2 value"; Ext.apply(b2,b1);b2.f1(); 在上面的代碼中,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"。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.