목록bind (3)
코딩쌀롱
4-1 콜백 함수란? 'callback'은 되돌아 호출해달라는 명령이다. 어떤 함수 X를 호출하면서 '특정 조건일 때 함수 Y를 실행해서 나에게 알려달라'는 요청을 함께 보낸 것이다. 함수 X는 해당 조건이 갖춰졌는지 여부를 스스로 판단하고 Y를 직접 호출한다. 이처럼 콜백 함수는 함수 또는 메서드에게 인자로 넘겨줌으로써 그 제어권도 함께 위임한 함수다. 4-2 제어권 호출 시점 let count = 0; const timer = setInterval(function () { console.log(count); if (++count > 4) clearInterval(timer); }, 300); 이 코드를 실행하면 콘솔창에는 0.3초에 한 번씩 숫자가 0부터 1씩 증가하며 출력되다가 4가 출력된 이후 종..
call 메서드 Function.prototype.call(thisArg[, arg1[, arg2[, ...]]]) call 메서드는 호출 주체인 함수를 즉시 호출하고, this 바인딩한다. 첫 번째 인자를 this로 바인딩하고, 이후의 인자들을 호출할 함수의 매개변수로 한다. apply 메서드 Function.prototype.apply(thisArg[, argsArray]) apply 메서드는 call 메서드와 기능적으로 완전히 동일하다. 두 번째 인자를 배열로 받아 그 배열의 요소들을 호출할 함수의 매개변수로 지정한다. call과의 차이는 호출 함수의 매개변수를 전달하는 방식에서만 있다. call / apply 메서드의 활용 call, apply 메서드는 명시적으로 별도의 this를 바인딩하면서 함..
📌 bind() 문제 발생 let view = new View(); view.addButton.addEventListener("click", view.addList); 클래스의 view.addList 함수 본체에 this는 view 객체를 가리키는데, addEventListener에서 this는 이벤트 target이 되는 element 객체를 가리킨다. 이런 차이로 정상적으로 동작하지 않는 문제가 발생했다. 해결 방법 let view = new View(); view.addButton.addEventListener("click", view.addList.bind(view)); bind()메서드로 this가 가리키는 객체를 직접 지정해줘서 해결했다. 📌 Event Delegation 문제 발생 // cla..