대부분의 경우 this의 값은 함수를 호출한 방법에 의해 this에 저장되는 대상이 달라진다.
this 는 실행 컨텍스트가 생성될 때 함께 결정된다.
함수 : 그 자체로 독립적인 기능을 수행
메서드 : 자신을 호출한 대상 객체에 관한 동작을 수행
call()
apply()
함수를 이용해 호출된 function어떤 함수가 생성자 함수로서 호출되면 (new 명령어와 함께 호출된 경우) 내부에서의 this는 곧 새로 만들 구체적인 인스턴스 자신이 된다.
6번 속성 덕분에 인스턴스의 프로토타입 초기화를 할 때 쓸 수 있다.
function Person (name, blog) {
this.name = name
this.blog = blog
}
const Doyoon = new Person("도윤", "http://~~");
화살표 함수 내부에는 this가 아예 없다. 화살표 함수 내에서 스코프 체인 상에서 가장 가까운 this 를 가져와서 쓰기 때문에, this를 함수 내부에서 써야할 일이 있을 경우에는 화살표 함수로 정의내리면 안될 것이다.
예를 들면 Constructor 생성자 함수를 정의할 때. 보통 this 로 초기화를 할 수 있기 때문에 화살표 함수로 쓰면 안 될 것.
function 표현에 비해 구문이 짧고 자신의 this, arguments, super 또는 new.target을 바인딩 하지 않는다. 화살표 함수는 항상 익명이고, 이 함수 표현은 메소드 함수가 아닌 곳에 가장 적합하다. 그래서 생성자로서 사용할 수 없다.
⇒ 화살표 함수를 사용해서 정의한 함수는 new를 사용해서 생성자로서 사용할 수 없다.