오늘 공부를 하다가 BIND
라는 개념을 알게되었다. BIND는 어떤 걸까? 코드로 보자.
const moduler = {
X: "이건 바인드",
getX: function () {
return this.X;
},
};
const outScope = moduler.getX;
console.log(outScope()); // undefined
const bindScope = moduler.getX.bind(moduler);
console.log(bindScope());// 이건 바인드
위 코드를 실행하면
undefined
이건 바인드
이렇게 차례대로 출력이 될 것이다.
첫 번째 oustScope에서는 moduler.getX를 받았지만 outScope의 입장에서 this의 Scope에는 X라는 Property가 존재하지 않는다.
그래서 Undefined가 출력된다.
두 번째 bindScope에서는 bind 함수를 사용했다.
bind를 이용해서 this의 Scope를 지정해주는 것이다. 나는 moduler라고 설정을 해주었기 때문에 moduler 객체에 존재하는 'X'로 this의 범위를 정해주는 것이다. 그래서 bindScope를 실행하면 moduler의 존재하는 X 값이 출력된다.