"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > JavaScript 마스터하기: 호출, 적용 및 바인딩 이해.

JavaScript 마스터하기: 호출, 적용 및 바인딩 이해.

2024-08-19에 게시됨
검색:832

Mastering JavaScript: Understanding call, apply, and bind.

JavaScript는 현대 웹 개발의 중추를 형성하는 다재다능하고 강력한 프로그래밍 언어입니다. 개발자는 JavaScript 여정을 진행하면서 코딩 기술을 크게 향상시킬 수 있는 고급 개념을 접하게 됩니다. 이러한 개념 중에는 호출, 적용 및 바인드 메소드가 있습니다. 이러한 메서드는 함수의 실행 컨텍스트를 조작하고 this 키워드를 관리하는 데 필수적인 도구입니다. 이 문서에서는 이러한 방법을 심층적으로 살펴보고, 차이점을 이해하고, JavaScript 프로젝트에서 효과적으로 사용하는 방법을 알아봅니다.

함수 컨텍스트 이해(this)

호출, 적용, 바인딩을 시작하기 전에 JavaScript에서 this 키워드의 개념을 이해하는 것이 중요합니다.

현재 기능을 실행하고 있는 객체를 의미합니다. 이 값은 함수 호출 방법에 따라 달라집니다.

  • 객체의 메소드에서는 객체를 의미합니다.
  • 함수에서 이는 전역 개체(브라우저의 창)를 나타냅니다.
  • 이벤트에서는 이벤트를 받은 요소를 의미합니다.
  • 엄격 모드("use strict";)에서는 함수에서 정의되지 않습니다.

그러나 이 값을 수동으로 설정해야 하는 경우가 있습니다. 호출, 적용 및 바인딩이 작동하는 곳입니다.

통화 방법

call 메소드는 개별적으로 제공되는 특정 this 값과 인수를 사용하여 함수를 호출하는 데 사용됩니다. 이는 다른 개체에서 메서드를 차용하거나 컨텍스트를 동적으로 설정하려는 경우 특히 유용합니다. 구문은 다음과 같습니다:

function.call(thisArg, arg1, arg2, ...)

다음은 call() 작동 방식을 보여주는 예입니다.

const person = {
  fullName: function(city, country) {
    console.log(this.firstName   " "   this.lastName   " lives in "   city   ", "   country);
  }
};

const john = {
  firstName: "John",
  lastName: "Doe"
};

person.fullName.call(john, "New York", "USA");
// Output: John Doe lives in New York, USA

이 예에서는 call()을 사용하여 john을 this 값으로 사용하여 fullName 함수를 호출하여 효과적으로 person 개체에서 메서드를 차용합니다.

적용 방법

apply() 메소드는 call()과 유사하지만 인수를 배열로 사용합니다. 구문은 다음과 같습니다:

function.apply(thisArg, [argsArray])

예를 들어보겠습니다.

const person = {
  fullName: function(city, country) {
    console.log(this.firstName   " "   this.lastName   " lives in "   city   ", "   country);
  }
};

const john = {
  firstName: "John",
  lastName: "Doe"
};

person.fullName.apply(john, ["New York", "USA"]);
// Output: John Doe lives in New York, USA

call()과 apply()의 주요 차이점은 인수를 처리하는 방법입니다. call()은 인수가 개별적으로 전달될 것으로 예상하는 반면, apply()는 인수가 배열로 전달될 것으로 예상합니다.

바인딩 방법

즉시 함수를 호출하는 call() 및 apply()와 달리, 바인딩()은 고정된 this 값을 사용하여 새 함수를 생성합니다. 이는 나중에 특정 컨텍스트로 호출할 수 있는 함수를 만드는 데 특히 유용합니다. 구문은 다음과 같습니다:

const boundFunction = function.bind(thisArg, arg1, arg2, ...)

bind() 작동 방식의 예는 다음과 같습니다.

const person = {
  firstName: "John",
  lastName: "Doe",
  fullName: function() {
    return this.firstName   " "   this.lastName;
  }
};

const logName = function() {
  console.log(this.fullName());
};

const boundLogName = logName.bind(person);
boundLogName(); // Output: John Doe

이 예에서는 사람이 이 값으로 영구적으로 바인딩된 새로운 함수boundLogName을 만듭니다.

비교 및 사용 사례

  • call: 함수를 호출하고 이 컨텍스트를 즉시 제어하여 인수를 개별적으로 전달해야 할 때 사용합니다.
  • 적용: call과 유사하지만 인수 배열이 있을 때 사용합니다.
  • bind: 나중에 특정 this 컨텍스트로 호출할 수 있는 함수를 생성해야 할 때 사용합니다.

성능 고려 사항

호출, 적용 및 바인딩은 강력한 도구이지만 성능에 미치는 영향을 고려하는 것이 중요합니다. Bind()는 새로운 함수를 생성하기 때문에 일반적으로 call()이나 Apply()보다 느립니다. 코드의 성능이 중요한 섹션에서 작업하는 경우 바인딩() 대신 call() 또는 Apply()를 사용할 수 있습니다.

모범 사례 및 일반적인 함정

통화, 적용, 바인딩을 사용할 때 다음 모범 사례를 염두에 두세요.

  • 함수에서 이것이 무엇을 참조해야 하는지 항상 명확하게 하세요.
  • 특정 이 값을 사용하여 즉시 함수를 호출하려면 call() 또는 apply()를 사용하세요.
  • 나중에 사용하기 위해 이 값이 고정된 새 함수를 생성하려면 바인딩()을 사용하세요.
  • 화살표 함수에는 변경할 수 없는 어휘 바인딩이 있으므로 화살표 함수와 함께 이러한 메서드를 사용할 때는 주의하세요.

일반적인 함정은 바인드()가 새 함수를 반환한다는 사실을 망각하는 것입니다. 바인딩된 기능을 다시 할당하거나 직접 사용하세요.

결론

호출, 적용, 바인딩을 마스터하는 것은 능숙한 JavaScript 개발자가 되기 위한 중요한 단계입니다. 이러한 메서드는 함수 실행 컨텍스트를 제어하고 this 키워드를 관리하는 강력한 방법을 제공합니다. 이러한 도구를 이해하고 효과적으로 사용하면 보다 유연하고 재사용 가능하며 유지 관리 가능한 코드를 작성할 수 있습니다.

JavaScript를 계속 탐색하면서 이러한 개념은 빙산의 일각에 불과하다는 점을 기억하세요. 언어는 끊임없이 발전하고 있으므로 최신 기능과 모범 사례를 지속적으로 업데이트하는 것이 중요합니다. 프로젝트에서 호출, 적용, 바인딩 사용을 연습하면 곧 더욱 우아하고 효율적인 JavaScript 코드를 작성하게 될 것입니다.

릴리스 선언문 이 글은 https://dev.to/sagarj521/mastering-javascript-understanding-call-apply-and-bind-4ba5?1에서 복제됩니다. 침해 내용이 있는 경우, [email protected]에 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3