はじめに
フォーラムでの私の観察によると、xtype を使用する場合にはさらに疑問があります。 xtype をまったく無視したり、xtype が何であるかを知らない人もいます。そこで私は、xtype の概念について詳しく説明することにしました。
定義
xtypeはクラス(Class)を表す識別名です。
たとえば、Ext.ux.MyGrid という名前のクラスがあるとします。通常、この名前を使用してクラスをインスタンス化する (クラスのオブジェクトを作成する) 必要があります。
クラス名に加えて、次のようにクラスの xtype を登録することもできます。
Ext.reg('mygrid', Ext.ux.MyGrid);
where xtype は mygrid であり、クラス名の一般的な形式は Ext.ux.MyGrid です。上記のステートメントは、新しい xtype を登録します。つまり、xtype mygrid はクラス Ext.ux.MyGrid に接続されます。
メリットは何ですか?
手元に大規模なプロジェクトがあると想像してください。ユーザーの操作に応答するために、プログラムには多数のオブジェクト (ウィンドウ、フォーム、グリッド) が含まれています。ユーザーがアイコンまたはボタンをクリックすると、フォーム内にグリッドを含む新しいフォームが作成され、最終的には画面上にレンダリングされます。
Ext2.x より前のコーディングに戻りましょう。当時は、ページが初めてロードされた後 (プログラム コードが初めて実行されたとき)、すべてのオブジェクトをインスタンス化していました。クライアント メモリには、Ext.ux.MyGrid クラスのオブジェクトがすでに存在し、ユーザーのクリックを待っています。 同じグリッドに対して、何百ものインスタンスがあると仮定すると、貴重なリソースの無駄遣いです。実際、多くのグリッドでは、ユーザーがグリッドをクリックしても表示されない場合があります。
遅延インスタンス化
xtype を使用する場合、メモリ内にあるのは次のような単なる構成項目オブジェクトです。