본문 바로가기
개발자일기/javascript

this는 무엇일까?

by 하린세상 2023. 5. 16.
반응형

1. 콘솔창에서 출력하거나 함수 안에서 쓴다면 this는 window를 뜻한다.

1
2
3
4
5
6
7
//window값 출력
console
.log(this)

//window값 출력
function 함수(){
  console.log(this)
}
함수();
 
cs

 

2. 메소드를 가지고있는 오브젝트를 뜻한다.

1
2
3
4
5
6
var 오브젝트1 = {
  data : 'Kim',
  함수 : function(){ console.log(this) } 
}
 
오브젝트1.함수();
cs

 

여기 콘솔창에는 { data : 'Kim', 함수 : f } 이처럼 오브젝트가 출력된다.

 

3. constructor 안에서 쓰면 constructor로 새로생성되는 오브젝트를 뜻합니다.

자바스크립트에서 비슷한 오브젝트를 여러개 만들고 싶을 경우 오브젝트를 복사하는게 아니라 constructor라는걸 만들어서 사용합니다.

1
2
3
4
5
function 기계(){
  this.이름 = 'Kim'
}
 
var 오브젝트 = new 기계();
cs

이렇게 new 키워드를 이용하면 새로운 오브젝트를 꺼낼 수 있습니다.

 

4. eventlistener 안에서 쓰면 this는 e.currentTarget이라는 의미입니다.

1
2
3
4
5
6
//이벤트리스너 안에서 콜백함수를 쓴 경우

document
.getElementById('버튼').addEventListener('click'function(e){
  var 배열 = [1,2,3];
  배열.forEach(function(){
    console.log(this)
  });
});

//window 3번 출력
cs
1
2
3
4
5
6
7
8
//오브젝트 안에서 콜백함수를 쓴 경우

var
 오브젝트 = {
  이름들 : ['김''이''박'];
  함수 : function(){
      오브젝트.이름들.forEach(function(){
        console.log(this)
      });
  }
}

//window 3번 출력
cs
1
2
3
4
5
6
7
8
var 오브젝트 = {
  이름들 : ['김''이''박'];
  함수 : function(){
     오브젝트.이름들.forEach(() => {
        console.log(this)
      });
  }
}

//{이름들: Array(3), 함수: ƒ} 3번 출력

cs

 

반응형

'개발자일기 > javascript' 카테고리의 다른 글

자바스크립트를 쓰는 이유  (0) 2023.05.12

댓글