関数が呼び出されるたびにメソッドが再定義されないように、メソッドをクラスのプロトタイプに直接割り当てることをお勧めします。
var A = function () {
this.prop = "A property";
}
A.prototype.method = function () {
return "A method";
}
このように定義されたメソッドをコンストラクターで呼び出したいとします。これは可能ですか?
var A = function (options) {
initialize(options); // initialize is undefined.
}
A.prototype.initialize = function (options) {
// do something with options.
}
コンストラクター内でスタブ メソッドを作成しても、関数のプロトタイプ バージョンの代わりに呼び出されるため、機能しません。this["initialize"]()
これを機能させることができた唯一の方法は、かなり洗練されていないように見えるブラケット構文を介して関数を参照することです。
var A = function (options) {
this["initialize"](options); // function isn't defined yet but will be soon!
}
A.prototype.initialize = function (options) {
// do something with options.
}
これは非常にぎこちなく、おそらくこの関数を呼び出す最適な方法ではありません。別の方法がありますか、それとも何か不足していますか?