[LeetCode] 2618. Check if Object Instance of Class

Chobby·2024년 7월 10일
1

LeetCode

목록 보기
35/194

instanceof 만으로 해결하려 했으나, 해당 코드는 원시타입primitive에는 의도한대로 동작하지 않는다는 점을 알게되었음, 추가로

객체가 해당 클래스의 메서드에 접근할 수 있다면 그 클래스의 인스턴스로 간주된다

라는 지문을 발견하여 예외 처리를 모두 해주기로 함

function checkIfInstanceOf(obj: any, classFunction: any): boolean {
    // 예외처리
    if (obj === null || obj === undefined || typeof classFunction !== 'function') {
        return false;
    }

    // 원시 타입 핸들링
    if (typeof obj !== 'object' && typeof obj !== 'function') {
        obj = Object(obj);  // 원시 타입을 객체로 변환
    }

    // 같은 instance인지 확인
    if (obj instanceof classFunction) {
        return true;
    }

    // 해당 클래스의 메서드에 접근할 수 있다면 그 클래스의 인스턴스로 간주된다 처리
    return Object.getPrototypeOf(obj) === classFunction.prototype || classFunction.prototype.isPrototypeOf(obj);
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글