1.typeof
단점: null 및 Array와 같은 유형을 감지하는 것이 그리 편리하지 않습니다.
Js 코드
typeof null; 🎜>
typeof []; //"객체"
2.instanceof
단점: 1. 객체 유형에만 적용 가능
2. 현재 클래스는 인스턴스의 프로토타입 체인에서 감지된 결과가 모두 true
Js 코드
123 instanceof Number; //false
null instanceof null; /TypeError
null 객체 인스턴스; //false
function A(){}
function B(){}
A.prototype=new B();
var aObj=new A();
aObj 인스턴스of B;//true
aObj 인스턴스of A;//true
3.constructor
참고: 클래스를 상속할 때 오류가 발생합니다
Js 코드
function A(){};
function B( ){}; A.prototype = new B();
var aObj = new A()
aObj.constructor === B; ;
aObj.constructor === A; //false;
4. 사용자 정의 메소드 구현(더 일반적임)
Js 코드
함수 (o){
return Object.prototype.toString.call(o).slice(8,-1)
}
테스트:
Js 코드
getType(null); //"Null"
getType(undefine); //"정의되지 않음"
getType([]) //" 배열"
getType({}); //"객체"
getType(()=>{}); //"함수"
getType(document .createElement(' div')); //"HTMLDivElement"