Extを読んでJavascript(二)Core/Ext.extedを学んで継承から言います.

1834 ワード

一般的に、一つのクラスを定義すると、一つのfunctionオブジェクトを定義して、その原型に公用の方法を書きます.例えば、var Tiger=function(){}Tiger.prototype.Hunting=function(){}しかし、完璧な枠組みやライブラリを作るために、助けを引き継ぎません.組織コードは大変で管理しにくい仕事です.Jsのクラスはfunctionオブジェクトであり、継承を実現するためには、主にサブクラスのプロトタイプを親タイプの一例として設定し(このようなタイプは親タイプのプロトタイプがあるすべてのメンバーを使用します)、サブタイプのプロトタイプのコンストラクタをサブタイプ自体に設定し直します.以下のコードのように、function Animal(){}function Tiger(){Tiger.prototype=new Animal()Tiger.prototype.Tiger=Tigerの継承は難しくないので、上のAnimalとTigerのパラメータを一つの方法にパッケージ化すれば実現できます.{subFn.prototype=new superFn()subFn.prototype.com tructor=subFn}Extは優れた枠組みとして、もちろん継承の実現も欠かせません.前の記事で述べたように、Ext.exted extented:function()//inforeverovaction=(sb,sp,overrides){if(typeof sp=='object'){overrides=sp;sp=sb;sb=function(){sp.aply(this,argments);}var F=function(){sbp、spp=spp=spp=spsp=spsp=sp=protototoppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppspp;if(spp.com nstructor==Object.prototype.com nstructor){spp.com nstructor=sp;sb.override=function(o){Ext.override(sb,o)};sbp.override=io;Ext.override(sb,overrides);return sb;}()もともと2行のコードだけで実現できる継承は30行近くになりましたが、Extenstはどのような種類のFperが導入されますか?{/in inline overrides var io=function(o){for(var m in o){this[m]=o[m];;returnfunction(sb,sp,overrides){var F=function()、sbp、spp=sp=sp.protype=F.propropropppppppppppppppppppppppppppppppppppppppppp= protytytytytype=propppppppppppppppppppppppppppppppppppppppppppppppppoverride=function(o){Ext.override(sb,o);;sbp.override=io;Ext.override(sb,overrides);return sb;}()空の関数を定義して、その原型をspの原型spに設定します.Fはspの身代わりです.理解する時はspと考えられます.サブクラスsbの原型をFの一例に設定して、その原型のコンストラクタを自分のsbに設定します.父種類spを見つけやすいように、サブクラスsbにsuperclass属性を父spの原型としてください.拡張属性は、サブクラスsbに属性書き換えのoverride方法を追加し、そのプロトタイプにoverride方法を追加しました.これにより、そのすべてのインスタンスオブジェクトは一つのオブジェクトから既存の属性を書き換えることができます.
              (                 )。  ,       ,             。