[JS/Node] this.

정지우·2021년 7월 17일
0

keyword.zip

목록 보기
35/40

this.

메소드를 속성으로 정의한 어떠한 객체를 가리키는 키워드

메소드

어떠한 객체의 속성으로 정의된 함수

cosnt obj = {
	key1: 'value1',
  	key2: 'value2',
  	getKeys: function() {
      			return [this.key1, this.key2]
    		} 
}

위 객체를 예로 든다면,
getKeys는 객체 obj의 속성으로 정의된 함수인 메소드이다.
obj.getKeys()와 같은 형태로 사용(호출)할 수 있죠.

전역 변수에 선언한 함수도 웹페이지에서 window 객체의 속성으로 정의된 함수라고 할 수 있습니다.

  • window. 접두사 없이도 참조가 가능하기 때문에 생략하고 쓰는 것뿐입니다. (window.foo()라고 사용해도 됩니다)
    이렇듯, method는 항상 '어떤 객체'의 method입니다.
    따라서 호출될 때마다 어떠한 객체의 method일 텐데,
    그 '어떠한 객체'를 묻는 것이 this입니다.

예시

let obj = {
	getObj: function(){ return this }
}

console.log(obj.key() === obj) // true
				

obj 객체 안에 getObj 메서드를 선언하고, this를 반환했을 때
obj.foo() === obj 이라는 코드에 true라고 반환할 것입니다.

this는 함수의 호출에 따라서 값이 달라지기도 합니다. (apply나 call, bind에 대해서는 하단의 학습자료를 통해 더 공부해 보세요.)

화살표 함수

그러나 화살표 함수는 자신의 this가 없습니다.
화살표 함수에서의 this는 자신을 감싼 정적 범위(lexical context)입니다. (전역에서는 전역 객체를 가리킵니다.)
일반 변수 조회 규칙(normal variable lookup rules)을 따르기 때문에, 현재 범위에서 존재하지 않는 this를 찾을 때, 화살표 함수 바로 바깥 범위에서 this를 찾습니다.
그렇기에 화살표 함수를 사용할 때, 이러한 특이점을 생각하고 사용해야 합니다.


Reference

this 참조자료

profile
재미를 쫓는 개발자

0개의 댓글