지식 정리 📝

20201014 this 용법

엄성준 2022. 10. 14. 00:20

1. 일반 함수로 실행

1
2
3
4
5
function a() {
  console.log(this);
  return ;
}
a(); // window
cs

함수를 그냥 실행하게 되면 this의 값은 전역 객체(window)를 참조하게 됩니다.

 

 

2. 메서드로 실행

- 메서드는 객체 안에 있는 함수로, 객체명.함수명 형태로 . 이 붙어있는 형태로 함수를 호출하는 경우입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const obj = {
  func() {
    console.log(this);
    return ;
  },
  sub: {
    subFunc() {
      console.log(this);
      return ;
    }
  }
}
obj.func(); // (1) obj
obj.sub.subFunc(); // (2) sub
cs

. 이 붙은 형태로 함수를 호출하는 메서드로써 함수를 호출하게 되면 this값은 . 앞에 작성한 객체를 참조하게 됩니다.

 

3. apply/ call / bind

 

- apply/call/bind는 명시적으로 this값을 개발자가 원하는 객체로 지정할 수 있도록 도와주는 메서드입니다.

 

 

4. new 연산자 - 생성자 함수

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function Person(name,age) {
  this.name = name,
  this.age = age,
  // return 문이 없음을 유의
}
  
function PersonReturn(name, age) {
  this.name = name,
  this.age = age,
  
  return {
    name"고릴라",
    age: 13
  }
}
  
const 영희 = new Person("영희"23); // (1)
const 의섭 = new Person("의섭"26); // (2)
  
const 고릴라 = new PersonReturn("원숭이"31);
console.log(고릴라.name); // 고릴라
cs

 

  •  this는 함수를 호출할 때 결정되는 것
  •  전역 범위에서 사용될 때 this는 전역객체를 가르킴
  •  함수에서 사용될때도 전역객체를 가르킴
  •  객체에 속한 메서드에서 사용될 때 그 메서드의 객체(점 앞에 명시된 객체)를 가르킴
  •  객체에 속한 메서드의 내부함수에서 사용될땐 전역객체를 가르킴
  •  생성자에서 사용될 때 생성자로 인해 생성된 새로운 객체를 가르킴

 

출처 : https://amyhyemi.tistory.com/224 

https://velog.io/@uiseop/this%EC%9A%A9%EB%B2%95%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C