Javascript 动态调用画布函数

Javascript 动态调用画布函数,javascript,canvas,Javascript,Canvas,有没有办法使用apply()或类似的方法调用canvas函数,比如动态调用canvas方法或能够传递参数数组 我在寻找这种效果 context.fillRect.apply(this,args)如果我理解正确: var op = "fillRect"; var args = [ 10, 10, 180, 180 ]; ctx[op].apply(ctx, args); 示例:您的apply方法应该可以正常工作: function rectangle(){ ctx.fil

有没有办法使用apply()或类似的方法调用canvas函数,比如动态调用canvas方法或能够传递参数数组

我在寻找这种效果
context.fillRect.apply(this,args)

如果我理解正确:

var op = "fillRect";    
var args = [
  10, 10, 180, 180  
];
ctx[op].apply(ctx, args);

示例:

您的
apply
方法应该可以正常工作:

function rectangle(){
    ctx.fillRect.apply(ctx,arguments);
}
当然,这会变得更加“动态”:

您可以使用相同的函数填充矩形、绘制圆形或绘制简单的直线:

// simple line
doSomethingWithCanvas(ctx,'lineTo',10, 100);

// circle
doSomethingWithCanvas(ctx,'arc',275, 275, 200, 0, Math.PI*2, true);

// fillRect
doSomethingWithCanvas(ctx,'fillRect,10, 10, 180, 180);

PS:通过提供画布上下文作为参数,您可以使用此函数在任何画布上绘制。

我很好奇,为什么您不能直接调用它们?您可以,但正如我所说,我希望使用函数字符串或参数数组动态调用它们。这样我就不需要为类似的操作创建两个单独的函数。对,我的问题是将
This
作为第一个参数传递给
apply()
。事后看来,这是一个明显的错误,但再次感谢您的回答!别担心;当我尝试你的例子时,我只是在谷歌上搜索了Chrome抛出的错误,发现了另一个讨论这个问题的问题。
// simple line
doSomethingWithCanvas(ctx,'lineTo',10, 100);

// circle
doSomethingWithCanvas(ctx,'arc',275, 275, 200, 0, Math.PI*2, true);

// fillRect
doSomethingWithCanvas(ctx,'fillRect,10, 10, 180, 180);