this
* https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/this
method는 '어떤 객체의 속성으로 정의된 함수'를 말한다.
위의 megalomaniac 객체를 예로 든다면, getMembers는 megalomaniac 객체의 속성으로 정의된 함수인 '메소드'라고 할 수 있다. megalomaniac.getMembers()와 같은 형태로 사용(호출)할 수 있다.
사실은, 전역 변수에 선언한 함수도 웹페이지에서 window 객체의 속성으로 정의된 함수라고 할 수 있다.
window. 접두사 없이도 참조가 가능하기 때문에(window.foo()라고 사용해도 됨) 생략하고 쓰는 것뿐이다. 이렇듯, method는 항상 '어떤 객체'의 method이다.
따라서 호출될 때마다 어떠한 객체의 method일 텐데, 그 '어떠한 객체'를 묻는 것이 this이다.
예시로, obj이라는 객체 안에 foo라는 메서드를 선언하고, this를 반환한다고 했을 때 ( 예: let obj = {foo: function() {return this}}; )
obj.foo() === obj 이라는 코드에 true가 반환될 것이다.
그러나 화살표 함수는 다르다. 자신의 this가 없다.
* 화살표 함수에서의 this는 자신을 감싼 정적 범위(lexical context)이다. (전역에서는 전역 객체를 가리킴)
* 일반 변수 조회 규칙(normal variable lookup rules)을 따르기 때문에, 현재 범위에서 존재하지 않는 this를 찾을 때, 화살표 함수 바로 바깥 범위에서 this를 찾는다.
728x90
'FE > JavaScript' 카테고리의 다른 글
[JS] test를 통한 원시자료형/참조자료형 개념 익히기 _Koans (0) | 2023.03.06 |
---|---|
[JS] test를 통한 object 개념 익히기 _Koans (0) | 2023.03.06 |
[JS] test를 통한 array 개념 익히기 _Koans (0) | 2023.03.06 |
[JS] test를 통한 화살표 함수 개념 익히기 _Koans (0) | 2023.03.05 |
[JS] test를 통한 const 개념 익히기 _Koans (0) | 2023.03.05 |