개발/JavaScript

[JavaScript] 코어 자바스크립트 - 4. this

알파카털파카 2023. 3. 6. 14:13

1. 자바스크립트 this는 다른 언어와 어떻게 다른가요?

다른 객체 지향 언어들에서는 클래스의 인스턴스에서만 this를 사용 가능

자바스크립트는 this를 어디서나 사용 가능하며, 객체와 관한 동작을 수행하기만 하면 메소드라고 부르기 때문에 혼란이 있음

 

2. 일반 함수와 화살표 함수에서 this가 어떻게 동작하나요?

일반 함수는 따로 this를 바인딩하지 않으면 기본적으로 전역객체를 가리킴

es6에서 등장한 화살표 함수는 this를 바인딩하지 않기 때문에 상위의 this를 가리킴 

 

3. this의 명시적 바인딩, 암시적 바인딩 대해서 설명해주세요.

명시적 바인딩은 call, apply, bind 등의 메소드를 사용하는 방법과 스코프 체인을 이용(상위 스코프에서 var self = this 선언)하는 방법이 존재

암시적 바인딩으로는 this 바인딩이 일어나지 않는 화살표 함수를 이용해 상위 스코프의 this를 이어받는 방법이 존재

 

4. call, apply에 대해서 설명해주세요.

call, apply는 명시적으로 this를 바인딩하면서 함수를 실행하는 메소드

둘의 기능은 동일

차이는 call의 경우 인수를 나열하는 반면, apply는 인수를 배열로 묶어서 넘겨줌

 

5. call, apply는 각각 어떻게 활용할수 있는지 설명해주세요.

apply는 인수를 배열로 넘겨줄 수 있기 때문에, 여러 인수를 묶어 배열로 전달하고 싶을 때 사용

예를 들어 최댓값, 최솟값을 구하는 경우에 사용

 

6. call과 bind의 차이는 무엇인가요?

call은 this를 바인딩하고 함수를 호출까지 함

bind는 this를 바인딩하고 새로운 함수를 반환하기만 함