MyClass = function() {
var init = function() {
console.log("Initializing");
}
this.init();
}
var myInstance = new MyClass();
上記を実行すると、
TypeError: オブジェクト [object Object] にはメソッド 'init' がありません
MyClass = function() {
var init = function() {
console.log("Initializing");
}
this.init();
}
var myInstance = new MyClass();
上記を実行すると、
TypeError: オブジェクト [object Object] にはメソッド 'init' がありません
コンストラクターのスコープ内のローカル変数は、インスタンスのプロパティにはなりません。
の代わりにvar init = function...;
、this.init = function...;
これは、オブジェクトのプロパティではなく、またはローカル変数init
として宣言するためです。var
そのためinit
、オブジェクトのメンバー関数にはなりません。これが、コードが期待どおりに実行されなかった理由です。this.init = function() {
期待される動作を実現するために、代わりに初期化してください。