OKdevTV Docs
Home OKdevTV
ESC
js 1 min read 1.7 KB Raw Markdown
On this page (4)

JavaScript this

  • 대부분의 경우 this의 값은 함수를 호출한 방법에 의해 결정
  • ES5는 함수를 어떻게 호출했는지 상관하지 않고 this 값을 설정할 수 있는 bind 메서드를 도입
  • ES6는 스스로의 this 바인딩을 제공하지 않는 화살표 함수를 추가했습니다(이는 렉시컬 컨텍스트 안의 this값을 유지합니다).

global context

  • 엄격 모드 여부에 관계 없이 전역 객체를 참조

function context

  • 함수 내부에서 this의 값은 함수를 호출한 방법에 의해 좌우

Case

  • 엄격 모드가 아니면 this의 값이 호출에 의해 설정되지 않으므로, 기본값으로 브라우저에서는 window인 전역 객체를 참조
  • 엄격 모드에서 this 값은 실행 문맥에 진입하며 설정되는 값을 유지
  • ECMAScript 5는 Function.prototype.bind를 도입. f.bind(someObject)를 호출하면 f와 같은 본문(코드)과 범위를 가졌지만 this는 원본 함수를 가진 새로운 함수를 생성
  • 화살표 함수에서 this는 자신을 감싼 정적 범위lexical context입니다.
    • 화살표 함수를 call(), bind(), apply()를 사용해 호출할 때 this의 값을 정해주더라도 무시
  • 함수를 어떤 객체의 메서드로 호출하면 this의 값은 그 객체를 사용
  • 함수를 new 키워드와 함께 생성자로 사용하면 this는 새로 생긴 객체에 묶임
  • 함수를 이벤트 처리기로 사용하면 this는 이벤트를 발사한 요소로 설정
  • 코드를 인라인 이벤트 처리기로 사용하면 this는 처리기를 배치한 DOM 요소로 설정

ref