'this' 키워드의 바인딩을 동적으로 변경하는 'bind' 메소드 활용 방법

JavaScript에서 ‘this’ 키워드는 현재 실행 중인 함수 또는 메소드가 속한 객체를 참조하는 데 사용됩니다. 하지만 때로는 함수의 실행 문맥을 변경하거나 다른 객체에 바인딩해야 할 필요가 있을 수 있습니다. 이때 ‘bind’ 메소드를 사용하면 ‘this’ 키워드의 바인딩을 동적으로 변경할 수 있습니다.

‘bind’ 메소드란?

‘bind’ 메소드는 함수의 ‘this’ 값을 영구적으로 변경하지 않고 해당 함수의 새로운 복사본을 생성합니다. 이 복사본은 지정된 객체를 함수가 속한 객체로 간주하고 ‘this’ 키워드를 이 객체로 바인딩합니다. 이후에 이 새로운 함수를 호출하면 항상 지정된 객체를 ‘this’로 사용할 수 있습니다.

‘bind’ 메소드를 사용한 예시

아래는 ‘bind’ 메소드를 사용하여 ‘this’ 키워드의 바인딩을 동적으로 변경하는 예시 코드입니다.

const obj1 = {
  name: 'John',
  sayHello: function() {
    console.log(`Hello, ${this.name}!`);
  }
};

const obj2 = {
  name: 'Jane'
};

const sayHelloToJane = obj1.sayHello.bind(obj2);
sayHelloToJane(); // 출력: Hello, Jane!

위의 예시에서 obj1name 속성과 sayHello 메소드를 가진 객체입니다. sayHello 메소드는 현재 객체 obj1name 속성을 참조하여 ‘Hello, John!’을 출력합니다.

하지만 obj2name 속성만 가지고 있고 sayHello 메소드는 없는 객체입니다. 따라서 obj2sayHello 메소드의 실행 문맥으로 사용하기 위해서는 ‘bind’ 메소드를 사용해야 합니다.

obj1.sayHello.bind(obj2)를 통해 sayHelloToJane 함수를 생성하고, 이 함수를 호출하면 ‘Hello, Jane!’이 출력됩니다. 이때 sayHelloToJane 함수의 ‘this’가 obj2로 바인딩되기 때문입니다.

정리

‘bind’ 메소드를 사용하면 JavaScript에서 ‘this’ 키워드의 바인딩을 동적으로 변경할 수 있습니다. 이를 통해 함수의 실행 문맥을 다른 객체로 변경하여 자유롭게 함수를 호출할 수 있습니다. ‘bind’ 메소드는 코드의 가독성과 재사용성을 높이는 데에 유용하며, JavaScript 개발자에게 중요한 개념입니다.

#javascript #bind