在初始化画布对象时保留上下文引用是否更好..
var Obj1 =
{
Init: function(ctx)
{
this.Ctx = ctx;
},
Draw: function()
{
this.Ctx.drawImage(img, x, y, width, height);
}
};
或者,为每次通话使用上下文是否更好?
var Obj2 =
{
Init: function()
{
},
Draw: function(ctx)
{
ctx.drawImage(img, x, y, width, height);
}
};
提前致谢。
答案 0 :(得分:1)
如果上下文是一个全局变量,那么以Javascript访问它的时间很小,必须搜索原型树才能找到它。在这种情况下,如果函数使用它超过两次,那么传递它可以提高性能。
如果您将它作为对象的属性,那么如果您传递它,则会有一个小的(非常小的)时间惩罚,而不是通过this.
你也可以关闭它
const myObject = (function(){
var ctx; // as closure variable
return {
init(){
ctx = canvas.getContext("2d");
},
drawSomething(){
ctx.drawImage(image,0,0);
}
}
}());
在Javascript的某些实现上哪个是最快的,但是这个差异非常小,只会变成一个因素,具体取决于它的使用频率和使用之间的代码量。
最后,它是个人风格,以及决定如何访问此类变量/属性的用法。
答案 1 :(得分:0)
取决于您是否要始终将它们绘制到相同的上下文中。如果没有在每次通话时传递上下文。如果它相同则保持参考。