Class

X. Class

Class を定義し システムの管理下に置く。

prototype 継承のブラウザ毎の差異も吸収し、 以下から最適な方法をしてくれる。

  1. Object.create はパフォーマンスが悪そうなので現在は使っていない。
  2. SubClass.prototype.__proto__ = SuperClass.prototype;
  3. SubClass.prototype = new SuperClass;
  1. X.Class.create( opt_settings, opt_name, opt_props ) でクラスを登録.
  2. コンストラクタ となるメソッドは、opt_props 内の Constructor : function( arg ){ ... }, に書く.
  3. 通常通り new で インスタンス生成
  4. kill() でオブジェクトをクリーンして削除、pool が有効の場合は pool される.
  5. pool が有効の場合、new で pool されたインスタンスが返される.

Members

static constant ABSTRACT

定義するクラスは抽象クラスになります。new AbstractClass() とするとエラーになります。

static constant FINAL

クラスの継承を禁止する。

static constant NONE

設定なし。

static constant POOL_OBJECT

インスタンスは破棄時(this.kill())に回収され、次回の new MyClass() 時に再利用されます。

static constant SINGLETON

未実装。でも目印になるので付けておきましょう。

Methods

static create(displayName, classSetting, props) → {__ClassBase__}

クラスを定義する。
X.Class.create() によるクラス定義は必ずしもコンストラクタ('Constructor')を必要としません。クラス定義時にコンストラクタが未設定の場合、スーパークラスがあればそのコンストラクタを使用します。

Parameters:
Name Type Argument Default Description
displayName string optional  クラスの名前
classSetting number optional  0 X_Class.POOL_OBJECT | X_Class.FINAL など
props object optional  {} このクラスのメンバと関数。コンストラクタは Constructor と書くこと
Returns:
Example
 var myClass = X.Class.create(
	'myClass',
 X.Class.FINAL,
 {
	 name : '',
	 Constructor : function( obj ){
	  this.name = obj.name;
	 },
	 getName : function(){
	  return this.name;
	 },
	 setName : function(v){
	  this.name = v;
	 }
 }
);