1 minute read

메서드와 ‘this’

객체는 실제 존재하는 개체 표현하고자 할 때 생성
JS 에선 객체 프로퍼티에 함수 할당 가능
  • 메서드 만들기

    함수 표현식으로 객체 프로퍼티에 함수 할당 가능 객체 프로퍼티에 할당된 함수를 메서드(method) 라 부름

  • 객체 지향 프로그래밍

    객체를 사용하여 개체를 표현하는 방식

    올바른 객체 선택법, 객체 사이의 상호작용을 나타내는 방법 등에 대한 의사 결정은 객체 지향 설계 기반

  • 메서드 단축 구문

    function 생략하고 메서드 정의 가능

    객체 상속과 관련된 미묘한 차이 존재

  • 메서드와 ‘this’

    메서드가 객체에 저장된 정보에 접근할 때 사용

    ‘점 앞’ 의 this는 메서드를 호출할 때 사용된 객체 나타냄

  • 자유로운 “this”

    JS 의 this 는 다른 프로그래밍 언어와 동작 방식 다름

    this 값은 런타임 에 결정 (컨텍스트에 따라 다름)

    동일한 함수라도 다른 객체에서 호출 시 ‘this’ 참조 값 달라짐

  • 객체 없이 호출하기 : this == undefined

    엄격 모드에서 객체 없이 호출 시 this 는 undefined

    엄격 모드 아닐 시 this 는 전역 객체 참조

  • 자유로운 this 가 만드는 결과

    다른 언어의 this 는 항상 메서드가 정의된 객체 참조 ‘bound this’

    JS 는 런타임에 결정. 메서드 정의된 곳 상관 없이 this 는 ‘점 앞의’ 객체가 무엇인가에 따라 ‘자유롭게’ 결정

  • ‘this’ 가 없는 화살표 함수

    화살표 함수는 ‘고유햔’ this 가지지 않음

    화살표 함수에서 this 참조 시 화살표 함수가 아닌 ‘평범한’ 외부 함수에서 this 값 가져옴

    별개의 this 만들어지는 것 원하지 않고 외부 컨텍스트에 있는 this 이용하고 싶을 시 유용.

요약

  • 객체 프로퍼티에 저장된 함수를 ‘메서드’

  • 메서드는 this 로 호출할 때 사용된 객체 참조

  • this 는 런타임에 결정

  • 함수 선언 시 this 사용 가능하지만 함수 호출되기 전까지 this 엔 값 할당 안 됨

  • 함수 복사해서 객체 간 전달 가능(this 로 객체 할당)

  • this 는 점 앞의 객체 참조

  • this 에 해당하는 객체 없을 시 this는 엄격모드에서는 undefined, 일반 모드에서는 전역 객체 참조

  • 화살표 함수는 자신만의 this 가지지 않음

  • 함수 선언 시 고유한 this 를 가지게 됨

Categories: ,

Updated: