this

yoo chang heon·2022년 3월 31일
0

JavaScript

목록 보기
4/9

대부분의 경우 this의 값은 함수를 호출한 방법에 의해 결정된다. 실행 중에는 할당으로 설정할 수 없고 함수를 호출할 때마다 다를 수 있다. 엄격모드가 아닌 기본값인 느슨한 모드를 기준으로 설명하겠다.

전역 문맥

전역 실행 맥락에서 this는 엄격 모드 여부에 관계없이 전역 객체를 참조한다. (웹 브라우저에서는 window 객체가 전역 객체)

엄격모드란?

JavaScript의 제한된 버전을 선택하여 암묵적인 느슨한 모드(기본 값)를 해제하기 위한 방법.

차이점

  • 기존에는 무시되던 에러들을 throwing
  • JavaScript 엔진의 최적화 작업을 어렵게 만드는 실수들을 바로잡는다.
  • ECMAScript의 차기 버전들에서 정의될 문법을 금지한다.

함수 문맥

함수 내부에서 this 의 값은 함수를 호출한 방법에 따라 다르다.

  1. 단순 호출(아무것도 없이 그냥 this 쓴거)
  • 느슨
    => window 객체 참조
  • 엄격
    => undefined
  1. bind 메서드
    ECMAScript는 bind()를 도입.
    this를 수정하게 해주는 내장 메서드
    f.bind(someObject)를 호출하면 f와 같은 본문과 범위를 가졌지만 this는 원본 함수를 가진 새로운 함수를 생성한다. 새로운 함수의 this는 호출 방식과 상관없이 영구적으로 bind()의 첫번째 매개변수로 고정된다.
let funcUser=func.bind(user);// func의 this를 user로 바인딩함
  1. 화살표 함수

화살표 함수에서 this는 자신을 감싼 정적 범위. 전역 코드에서는 전역 객체

  1. 객체의 메서드로서

함수를 어떤 객체의 메서드로 호출하면 this 의 값은 그 객체를 사용/

  1. 인라인 이벤트 핸들러에서
    코드를 인라인 이벤트 처리기로 사용하면 this는 처리기를 배치한 DOM요소로 설정

참고

0개의 댓글