less than 1 minute read

  • obj instanceof Class 는 obj 가 Class 에 속하거나 Class 상속받는 클래스에 속하면 true 반환

  • instanceof 는 프로토타입 체인 올라가며 인스턴스(객체) 여부나 상속 여부 확인

  • instanceof 의 동작대상은 객체이며 반환값은 true/false

  • instanceof 는 생성자 함수에서도 사용 가능

  • instanceof 연산자는 계층 구조 가진 클래스 다룰 때나 클래스 상속 여부 확인할 때 유용

  • Symbol.hasInstance 로 instanceof 로직 설정 가능

  • 클래스에 정적 메서드 Symbol.hanInstance 구현되어 있으면 obj instanceof Class 문이 실행될 때 해당 메서드 호출되며 호출 결과는 Boolean 형식이어야 함

  • Symbol.hanInstance 구현되어 있지 않을 시 프로토타입 체인 올라가며 Class.prototype 이 obj 프로토타입 체인 상의 타입 중 하나와 일치하는지 확인 후 유/무에 따라 true/false 반환

  • objA.isPrototypeOf(objB) 는 objA가 objB의 프로토타입 체인 안 유/무에 따라 true/false 반환

  • obj instanceof Class 는 Class.prototype.isPrototypeOf(obj) 와 동일

  • isPrototypeOf 는 Class 생성자 제외하고 포함 여부 확인. 프로토타입 체인과 Class.prototype 만 고려

  • typeof 의 동작 대상은 원시형이며 반환값은 문자열

  • {}.toString 의 동작대상은 원시형, 내장객체, Symbol.toStringTag 가 있는 객체이며 반환값은 문자열

  • 객체에서 내장 toString 추출하는게 가능(명세서에 의해)하며 추출한 메서드는 모든 값 대상으로 실행 가능하며 호출 결과는 값에 따라서 달라짐

  • 내장 메서드는 추출한 뒤 call을 사용해 컨텍스트를 원하는 대상에 설정한 뒤 toString 가능

  • 특수 객체 프로퍼티 Symbol.toStringTag 사용하여 toString 동작 커스터마이징 가능(내장 객체에 정의되어 있음)

Categories: ,

Updated: