반응형
Today I learned :
- inheritance Pattern (Pseudo-classical / ES6 class)
- .bind
//functional
var makeDancer = (timeBetweenSteps) => {
const dancer = {};
dancer.step = () => {
setTimeout(dancer.step, timeBetweenSteps);
};
}
//pseudo-classical
var Dancer = function (timeBetweenSteps) {
this.timeBetweenSteps = timeBetweenSteps;
};
Dancer.prototype.step = function () {
setTimeout(this.step.bind(step, this.timeBetweensteps);
};
//ES6 class
var DancerClass {
constructor(timeBetweenSteps) {
this.timeBetweenSteps = timeBetweenSteps;
}
step() {
setTimeout(this.step.bind(step, this.timeBetweensteps);
}
};
functional style 일때는 bind처리를 안해도 해당 기능이 내가 원하는데로 작동이 되는 반면에, Pseudo style 과 Class 일때는 step의 기능이 작동하지 않아 그 원인을 살펴보니 다음과 같았다. functional 의 경우 arrow function 을 사용했기 때문에 (=this를 사용하지 않아) 실행할 때마다 문맥에 맞게 step이 알맞게 변경된다. 반면에, 하단의 경우 this를 사용하였기 때문에 각각 실행할때 this를 실행하는 문맥에 맞게 변경해주는 일이 필요했다. 즉 BlinkyDancer가 step을 실행할 경우, this는 BlinkyDancer이므로, step에 bind해주는 일이 필요하다.
반응형
'2. 우당탕탕 개발자 > 2-1. 공부기록' 카테고리의 다른 글
30Dec2019 TIL (0) | 2019.12.31 |
---|---|
29Dec2019 TIL (0) | 2019.12.29 |
24Dec2019 TIL (0) | 2019.12.24 |
23Dec2019 TIL (0) | 2019.12.24 |
22Dec2019 TIL (0) | 2019.12.23 |
댓글