我正在学习JavaScript,并且正在使用html5 canvas api。由于我首先必须创建画布元素,并且获取2d/3d上下文(这是2个未连接的变量),因此创建可将这两个元素合并为一个的东西似乎是合乎逻辑的。在JavaScript构造函数中分配'this'的值
想法是有图形(gfx
)对象(这实际上是上下文对象)和graphics.canvas
这是参考canvas元素,这样我可以这样做gfx.fillRect(0,0,150,75);
,也许重新大小画布gfx.canvas.width = x;
等等
当我尝试创建一个构造函数时,它并不真正解决问题,我想出了一个解决方案,将context
对象作为属性返回canvas
,但我不确定这是否是正确的方法。
这个问题最好的解决方法是什么?
这里是我的代码:
function Canvas (context, width, height) {
var canvas = document.createElement('canvas'),
contex = canvas.getContext(context);
this = contex; // <<-- Getting error here
this.canvas = canvas;
this.canvas.width = width;
this.canvas.height = height;
this.append = function() {
document.body.appendChild(this.canvas);
};
}
function Canvas2 (context, width, height) {
var canvas = document.createElement('canvas'),
contex = canvas.getContext(context);
contex.canvas = canvas;
contex.canvas.width = width;
contex.canvas.height = height;
contex.append = function() {
document.body.appendChild(this.canvas);
};
return contex;
}
var gfx = new Canvas('2d', 400, 400),
gfx2 = Canvas2('2d', 400, 400);
gfx.append();
gfx2.append();
您不能分配'this'任何东西。它是只读的。 – 2013-04-08 20:45:20
不要使用'this'。 – js1568 2013-04-08 20:45:49
你根本不能改变'this'指针。这是ecmascript。 – lib3d 2013-04-08 20:46:21