Pot.createConstructor

{Function} Pot.createConstructor ([{String} name ,] {Object} proto [, {Function|String} init])

Pot.js と PotLite.js で利用可能。

新しいコンストラクタを作成します。

prototype と共にコンストラクタを生成して返します。
任意に引数 name が指定されると、toString に使われます。
引数 init は初期化する関数名または関数を任意で指定します。
引数 init が省略されて、proto 内に 'init' というメソッドがあると、それを初期化する関数と扱います。

Pot.globalize() が適応されている場合、Pot.createConstructor() が createConstructor() で実行できます。

新しいコンストラクタが返ります。

// proto 内に init で初期化メソッドを指定
var Hoge = Pot.createConstructor('Hoge', {
  init : function(a, b, c) {
    this.value = a + b + c;
  },
  getHoge : function() {
    return 'hogehoge';
  }
});
Pot.debug(new Hoge(1, 2, 3).value); // 6
Pot.debug(new Hoge().getHoge());    // 'hogehoge'
// 初期化関数を関数で指定
var Fuga = Pot.createConstructor({
  value : 1,
  addValue : function(v) {
    this.value += v;
    return this;
  },
  getValue : function() {
    return this.value;
  }
}, function(a, b, c) {
  this.value += a + b + c;
});
Pot.debug(new Fuga(1, 2, 3).value); // 7
Pot.debug(new Fuga(1, 2, 3).addValue(10).getValue()); // 17
// initialize という名前で初期化関数を指定
var Piyo = Pot.createConstructor('Piyo', {
  initialize : function(a, b, c) {
    this.value = a + b + c;
  },
  getValue : function() {
    return this.value;
  }
}, 'initialize');
Pot.debug(new Piyo(10, 20, 30).getValue()); // 60