从没有eval的函数返回画布代码行

时间:2017-05-11 19:39:40

标签: javascript eval

这是我的第一个Stack问题,请原谅我的格式。
我正在制作一个简单的矢量绘图工具。 full CodePen code here

所以我使用方法'temp'和'template'画布绘制命令制作了一个DRAW对象,并希望在它之间输入一个可变代码行,该代码行从该对象的其他方法返回(add,sub ...)。

temp(operation){

  ctx.beginPath();
  ctx.moveTo(o.x, o.y);  
  eval(operation);
  ctx.strokeStyle="red";
  ctx.stroke(); 
}

有人可以帮我避免使用eval(),我读的很糟糕且容易出错。 其他每一个建议都会很棒。 感谢。

2 个答案:

答案 0 :(得分:0)

您可以将函数作为参数传递给temp。

doSomething(options) {
  // some code to execute
}

temp(callback) {
  const options = {};

  callback(options);
}

temp(doSomething)

答案 1 :(得分:0)

好的,那就是我向DRAW.temp传递了一个带参数的add函数,但它没有用。 现在我只传递DRAW.add,并且在temp方法中添加了参数(v1,v2),并且没有。

DRAW={
add(v1,v2){},
sub(v1,v2){},   /////operations

temp(operation){

  console.log(operation)
  ctx.beginPath();
  ctx.moveTo(o.x, o.y);  
  operation(v1,v2);/////////////input operation
  ctx.strokeStyle="red";
  ctx.stroke();
 } 
 };
var draw =DRAW.temp;
var add =DRAW.add;

draw(add)