日々精進

新しく学んだことを書き留めていきます

Class Systemその2

III. Hands-on
var MyWindow = Ext.extend(Object, { ... });
↑はネームスペースを汚すので良くない。
My.cool.Window = Ext.extend(Ext.Window, { ... });
↑ならOK。でもMy.coolにオブジェクトを代入しておかないといけない。
Ext.ns('My.cool');
My.cool.Window = Ext.extend(Ext.Window, { ... });
↑Ext.nsを使うと空のオブジェクトを入れといてくれる。
でもまだExt.Windowをロードしておかないといけないという問題がある。
今までは依存関係を解決できなかったのでext-all.jsを使っていた。
Ext.define(className, members, onClassCreated);
↑を使えば依存関係を自動的に解決してくれるよ!
依存しているファイルをすべて自動的にロードしてくれる。
さらにExt.nsを使わなくてもOK.
コード例は↓

Ext.define('My.sample.Person', {
    name: 'Unknown',

    constructor: function(name) {
        if (name) {
            this.name = name;
        }

        return this;
    },

    eat: function(foodType) {
        alert(this.name + " is eating: " + foodType);

        return this;
    }
});

var aaron = Ext.create('My.sample.Person', 'Aaron');
    aaron.eat("Salad"); // alert("Aaron is eating: Salad");

コンストラクタを定義しておくとExt.createの第二引数をコンストラクタに渡してオブジェクトを作ってくれる。