2017-05-11 1 views
0

내 첫 번째 스택 질문이므로 내 서식을 변명하십시오.
간단한 벡터 그리기 도구를 만들고 있습니다. full CodePen code herereturn canvas code line from function without

그래서 'temp'안에 'template'캔버스 드로잉 명령을 사용하여 DRAW 개체를 만들고이 개체의 다른 메서드에서 반환되는 변수 코드 줄을 입력하고 싶습니다. (add, sub ...).

temp(operation){ 

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

누군가 내가 eval()을 피할 수있게 도와 줄 수 있습니까? 나는 읽기 어렵고 오류가 발생하기 쉽습니다. 다른 모든 제안 사항도 훌륭합니다. 감사합니다. .

+0

인수로'ctx '를 취하여 작업을 수행 할 수 있습니다. – Rajesh

답변

0

임시의 인수로 함수를 전달할 수 있습니다.

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

temp(callback) { 
    const options = {}; 

    callback(options); 
} 

temp(doSomething) 
+0

감사합니다. 그것을 시도했지만 결과를주지 않았다. 그것은 'temp'에 인수가있는 함수를 전달한 것처럼 보입니다. 'DRAW.temp (DRAW.add (v1, v2))'와 같이 작동하지 않았지만 'DRAW.add'와 'temp'나는 완벽하게 작동하는 'operation (v1, v2)'을 호출했습니다. –

0

좋아요, 그래서 제가 draw.temp에 인수가있는 함수를 추가하면 작동하지 않습니다. 이제는 DRAW.add 만 전달하고 인수 (v1, v2)는 temp 메서드 및 ok에 추가됩니다.

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)