상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 자바스크립트에서 bind, call, apply의 차이는 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
<a href='https://sangseek.com/sangseeks/자바/ko'>자바</a>스크립트에서 `bind`, `call`, `apply`는 모두 함수의 `this` 컨텍스트를 설정하는 데 사용되는 메서드입니다. 이들은 비슷한 목적을 가지고 있지만, 사용 방법과 결과가 다릅니다. 아래에서 각각의 메서드에 대해 자세히 설명하겠습니다. 1. `call` `call` 메서드는 함수를 호출하면서 `this` 값을 지정할 수 있게 해줍니다. 이 메서드는 즉시 함수를 실행하며, 첫 번째 인자로 `this`로 사용할 객체를 전달하고, 그 뒤에 함수에 전달할 인자들을 나열합니다. 사용 예시 ```javascript function greet(greeting) { console.log(greeting + ', ' + this.name); } const person = { name: 'Alice' }; greet.call(person, 'Hello'); // Hello, Alice ``` 위의 예제에서 `greet` 함수는 `call` 메서드를 통해 `person` 객체를 `this`로 설정하고, 'Hello'라는 인자를 전달하여 즉시 실행됩니다. 2. `apply` `apply` 메서드도 `call`과 유사하게 `this` 값을 설정하지만, 인자를 배열 형태로 전달해야 한다는 점이 다릅니다. 즉, 여러 개의 인자를 배열로 묶어서 전달할 수 있습니다. 사용 예시 ```javascript function greet(greeting, punctuation) { console.log(greeting + ', ' + this.name + punctuation); } const person = { name: 'Bob' }; greet.apply(person, ['Hi', '!']); // Hi, Bob! ``` 위의 예제에서 `greet` 함수는 `apply` 메서드를 통해 `person` 객체를 `this`로 설정하고, 인자를 배열로 전달하여 실행됩니다. 3. `bind` `bind` 메서드는 함수를 호출하지 않고, 새로운 함수를 반환합니다. 이 새로운 함수는 `this` 값을 지정한 객체로 설정하며, 추가적인 인자도 미리 설정할 수 있습니다. 반환된 함수는 나중에 호출할 수 있습니다. 사용 예시 ```javascript function greet(greeting) { console.log(greeting + ', ' + this.name); } const person = { name: 'Charlie' }; const greetCharlie = greet.bind(person); greetCharlie('Hey'); // Hey, Charlie ``` 위의 예제에서 `greet.bind(person)`은 `this`를 `person`으로 설정한 새로운 함수를 반환합니다. 이 함수는 나중에 호출할 수 있으며, `greetCharlie`를 호출할 때 'Hey'라는 인자를 전달합니다. 요약 - call : 함수를 즉시 호출하며, `this`와 인자를 개별적으로 전달합니다. - apply : 함수를 즉시 호출하며, `this`와 인자를 배열 형태로 전달합니다. - bind : 함수를 즉시 호출하지 않고, `this`와 인자를 미리 설정한 새로운 함수를 반환합니다. 이러한 메서드들은 자바스크립트에서 함수의 `this` 컨텍스트를 제어하는 데 매우 유용하며, 다양한 상황에서 활용될 수 있습니다. `call`과 `apply`는 즉시 실행되는 반면, `bind`는 나중에 호출할 수 있는 함수를 생성하는 점이 큰 차이점입니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기