this.SOME_MEMBER をメソッドに渡そうとしていますが、同じメンバーとして通過しません。以下のコードは、私がやろうとしていることをもう少し理解できるはずです。
function App()
{
this.canvas = new Object();
}
App.prototype.createCanvas = function(obj, width, height)
{
obj = document.createElement('canvas');
obj.setAttribute('width', width);
obj.setAttribute('height', height);
log(obj == this.canvas); //false
log(this.canvas == app.canvas); //true
//it's clear that this refers to app
//so why doesn't obj refers to this.canvas?
//how do i get obj to equal this.canvas?
}
App.prototype.init = function()
{
this.createCanvas(this.canvas, 800, 600);
log(this.canvas.width); //undefined
}
var app = new App();
app.init();
今、私は単に次のことを行うことができることを理解しています:
function App()
{
this.canvas = new Object();
}
App.prototype.createCanvas = function(width, height)
{
this.canvas = document.createElement('canvas');
this.canvas.setAttribute('width', width);
this.canvas.setAttribute('height', height);
}
App.prototype.init = function()
{
this.createCanvas(800, 600);
log(this.canvas.width); //800
}
var app = new App();
app.init();
これはほとんどのアプリケーションで機能しますが、変数の名前を this.canvas に制限しています。最終的には、メソッドをもう少し柔軟にする必要があります。
document.createElement 関数と element.setAttribute 関数を単なる例として使用していることに注意してください。それらは、変数 obj を変更するものに置き換えることができます。
では、「this.canvas」が引数として使用されている場合、どうなるでしょうか。どうすればやりたいことを達成できますか?
前もって感謝します!