Extでは、appleおよびappyIf

1279 ワード

いずれも、オブジェクトの属性を別のオブジェクトに適用することを可能にするためのアプリと、属性コピーに相当します.異なるのは、appyは対象オブジェクトの属性をカバーしますが、appyIfはコピー対象オブジェクトの中にはなく、ソースオブジェクトの中にある属性だけをコピーします.
appy方法の署名は、「appy(Object obj、Object config、Object defaults)」であり、この方法は3つのパラメータを含み、最初のパラメータはコピーする対象オブジェクト、2番目のパラメータはコピーのソースオブジェクト、3番目のパラメータはオプションであり、対象にデフォルト値を提供することを示す.第三のパラメータ(もしあれば)と第二のパラメータの属性を第一のパラメータオブジェクトにコピーするように簡単に理解できる.下のコードを見てください.
PLAN TEXT
JAVA SCRIPT:
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(b 2,b 1)という文はb 1の属性をb 2オブジェクトにコピーしていますので、b 2を呼び出すf 1方法は、「p 2 value」のヒント情報をポップアップすることができます.b 2オブジェクトはp 2属性値を含んでいるが、コピーするとその属性値が上書きされる.アプリメソッドを呼び出したときに、コピー属性のデフォルト値を3つ目のパラメータに指定することができます.
PLAN TEXT
JAVA SCRIPT:
Ext.apply(b2, b1, { p3: "p3 value" });
alert(b2.p3); 
これにより、b 2にはp 3の属性が含まれ、値は「p 3 value」となる.appyIfメソッドの機能はappyと同じですが、対象となるオブジェクトとソースオブジェクトの両方に存在する属性はコピーされません.例えば、前のプレゼンテーション方法のコードをappyIfに変更すると、次のようになります.
PLAN TEXT
JAVA SCRIPT:
 
Ext.applyIf(b2, b1);
b2.f1(); 
b 2にはp 2属性が既に存在しているので、b 2.f 1()の方法ではthis.p 2を参照すると、b 1で定義された「p 2 value」ではなく「b 2 value」が得られます.