从字符串构造函数

时间:2016-01-28 09:51:36

标签: javascript canvas

我想知道这样的事情是否可行。我们使用'canvas'作为例子:

(function(){
function Canvas(canvas){
  this.canvas = document.querySelector('#canvas');
  this.ctx = this.canvas.getContext('2d');
  this.testMethod('fillRect',[10,10,10,10]);
}
Canvas.prototype.testMethod = function(method,params){
this.method = method;
this.params = params;

this.ctx.method.apply(this.ctx, params);

}
var canvas = new Canvas();
})()
<canvas id='canvas' width=400 height=400></canvas>

当然它不起作用,但我想知道是否有可能以这种方式动态构造函数。我想要实现的是一种用户界面,我将在其中输入方法名称和参数,它们将在特定的上下文中执行(在此特定示例中为CanvasRenderingContext2D)

1 个答案:

答案 0 :(得分:1)

尝试更改此行

this.ctx.method.apply(this.ctx, params);

this.ctx[method].apply(this.ctx, params);

因为canvas的属性(其值是函数)名称存储在变量中。

例如,如果您的对象是

var obj = {
 a: function(){console.log(1)}
}

你可以调用

obj.a(); 

或者如果你有

var b = "a";
obj[b]();