这是我的第一个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(),我读的很糟糕且容易出错。 其他每一个建议都会很棒。 感谢。
答案 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)