TIL: Javascript - bind()

초보 개발자가 가장 흔히 하는 실수는 개체로부터 메소드를 추출한 뒤, 나중에 그 함수를 호출하여 원 객체를 그 함수의 this로서 사용하는 것이다. 이는 주의하지 않으면 원 객체가 손실되게 된다. 그래서 그 함수로부터 원 객체를 사용하여 바인딩(bind)된 함수를 생성하면, 문제가 해결된다.

그래서

bind()의 간단한 사용법은 특정 this값으로 호출되는 함수를 만드는 것이다.

this.x = 9;
var module = {
  x: 81,
  getX: function() { return this.x; }
};

module.getX(); // 81

var retrieveX = module.getX;
retrieveX();
// 9 반환 - 함수가 전역 스코프에서 호출됐음

// module과 바인딩된 'this'가 있는 새로운 함수 생성
var boundGetX = retrieveX.bind(module);
boundGetX(); // 81

우째서 저게 81이 안나오고 9가 나오는건지 이해가 안가지만…….그렇다고한다…..그래서 bind를 써서 원하는 this값을 쓸수 있도록 하는 것