instanceof 로 클래스 확인하기
-
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 동작 커스터마이징 가능(내장 객체에 정의되어 있음)