instanceof와 typeof는 예전에도 가끔 사용했는데, 특히 typeof가 상대적으로 더 많이 사용되는데요. 오늘은 ext 소스코드를 공부하다보니 갑자기 여러 곳에 사용되는 것 같더라고요. 하지만 차이점도 포함되어야 합니다. 저는 온라인에서 일부 기사를 읽고 그 사이의 관계를 어느 정도 이해하고 있습니다.
Instanceof와 typeof는 모두 변수가 비어 있는지 또는 변수 유형이 무엇인지 확인하는 데 사용될 수 있습니다.
Typeof는 변수의 유형을 얻는 데 사용됩니다. Typeof는 일반적으로 숫자, 부울, 문자열, 함수, 개체, 정의되지 않은 결과만 반환할 수 있습니다. if(a)를 사용하는 대신 typeof를 사용하여 변수가 존재하는지 여부를 확인할 수 있습니다(예: if(typeof a!="undefine"){}. 왜냐하면 a가 존재하지 않으면(선언되지 않음) For Array 오류가 발생하기 때문입니다. , Null 특수 개체에 대해 typeof를 사용하면 개체가 항상 반환됩니다. 이것이 typeof의 제한 사항입니다.
객체가 배열인지 확인하고 싶거나, 변수가 객체의 인스턴스인지 확인하려면, instanceof를 사용해야 합니다. 인스턴스of는 변수가 객체의 인스턴스인지 확인하는 데 사용됩니다. 예를 들어 var a=new Array(); 경고(a 인스턴스of Array); 는 true를 반환합니다. 배열은 객체의 하위 클래스이기 때문입니다. 또 다른 예: function test(){};var a=new test();alert(a instanceof test)는 true를 반환합니다.
Instanceof의 경우 함수의 인수라는 문제를 하나 더 삽입해야 합니다. 우리는 모두 인수가 배열이라고 생각할 수 있지만, 인스턴스of를 사용하여 테스트해 보면 인수가 배열이 아니라는 것을 알 수 있습니다. 배열 객체는 비슷해 보이지만.