1

ExtJsコードを見てこれを解決しようとしましたが、そこで起こっている魔法がわかりません。

Extクラスの動作を再現したいと思います。これは、2つの基本的な関数に分解できます。

  • 定義
  • 作成

定義は、新しいクラスの名前空間を予約し、クラスコンストラクターへの参照を保存するために使用されます(少なくとも私のデバッグはこれを示しています)。使用例:Ext.define('Foo', {param: 1});

Createは、新しいオブジェクトインスタンスを返すだけのクラスをインスタンス化するために使用されます。

ここで、afaikコンストラクター自体はオブジェクトをインスタンス化するのに十分ではないため、「define」ステップに何を格納する必要があるのでしょうか。(または私は間違っています)

javascriptのクラスシステムのトピックをカバーする資料への参照を見た人はいますか?

4

1 に答える 1

1

Douglas Crockfordには、JavaScriptの古典的な継承に関する優れた記事があります:http ://www.crockford.com/javascript/inheritance.html

私が思ういくつかの擬似コードは、SenchaがExtに持っているものと同様に機能すると思います(ただし、最初に上記のリンクで適切な実装を確認する必要があると思います)。

//define takes class name (string) and definition(object)
//definition in this case should have a method called constructor()

var classes = {};


classes.define = function(className, definition){
    classes[className] = definition;
}

//call create with class name and it will make a new class using that constructor
classes.create = function(className){
   return new classes[className].apply(this);
}

classes.define('Hello',{name: "Pi" , game : "Tennis"});

console.log(classes);

classes.create('Hello');
于 2012-10-11T00:38:36.023 に答える