JS 에서 데이터 형식 을 판단 하 는 방법 - 수심

10204 단어 웹 전단
typeof 、instanceof、constructor、jQuery.type()
1. type: of - 대응 하 는 데이터 형식 을 되 돌려 줍 니 다.
  :        
  :typeof(   )
   var str = "     ";
   var num = 666;
   var obj = new Object();
   var arr = [1,2,3];
   var fn = function(){
       console.log("  ")
   }
   typeof(str)  //string
   typeof(num)  //number
   typeof(obj)  //object
   typeof(arr)  //object
   typeof(fn)  //function

질문: 인용 형식 (복잡 한 데이터 형식: 대상 과 배열) 이 라면 모두 Object 로 되 돌아 가 구체 적 으로 구분 할 수 없습니다.
2. instanceof - 대상 형식 에 만 적용 되 며 간단 한 형식의 데이터 형식 에 적용 되 지 않 으 며 boolean 값 을 되 돌려 줍 니 다.
   :1:      ;
       2:                   
   :    instanceof         ||           instaneof     
1: 대상 유형 이 라면 구분 가능
arr instanceof Array                          //true
new Date() instanceof Date              //true
2: 구조 함수 instanceof 의 인 스 턴 스 여 부 를 검증 하기 위해 F 사용 fn
var F = new fn();                           //       
F instanceof fn ;                           //true,  F   fn   
서로 다른 구조 함수 에 대해 같은 인 스 턴 스 가 true 로 돌 아 왔 습 니 다. 다음 F 는 Object 에 대해 서도 true 로 돌 아 왔 습 니 다.
F instanceof Object                        //true 
instanceof : 왼쪽 은 인 스 턴 스 대상 이 고 오른쪽 은 구조 함수 입 니 다. 인 스 턴 스 of 는 구조 함수 의 원형 대상 prototype 이 왼쪽 대상 의 원형 체인 에 있 는 지 확인 하고 있 으 면 true 로 돌아 갑 니 다. 그렇지 않 으 면 false 로 돌아 갑 니 다. instanecof 내부 실행 함수:
instanceof (A,B) = {
  var L = A.__proto__;
   var R = B.prototype;
   if(L === R) {
       //A     __proto__  B     
       return true;
   }
   return false;
}

그러면 왼쪽 대상 의 원형 체인 과 오른쪽 함수 의 원형 대상 에서 무슨 일이 일 어 났 는 지 살 펴 보 겠 습 니 다.
F.__proto__===fn.prototype                 //true      F     fn     
F.__proto__.proto__||fn.prototype.__proto__===Object.prototype  //true fn      Object     
Object.prototype.__proto__                 //null

설명 은 F - fn - Object 가 모두 하나의 원형 체인 에 있 는데 그 중에서 fn 과 Object 의 prototype 속성 은 모두 F 가 있 는 이 원형 체인 에 존재 하기 때문에 F 침 은 두 함수 에 대해 모두 true 로 돌 아 왔 다.
3. constructor - 자체 가 prototype 대상 의 속성 입 니 다. 기본적으로 prototype 속성 이 있 는 구조 함 수 를 가리 키 며 데이터 형식 을 판단 합 니 다.boolean 값 되 돌리 기
  :1.      ,    、  、   ,      
  :   .constructor ===     
str.constructor===String   //true
num.constructor===Number   //true
obj.constructor===Object   //true
arr.constructor===Array   //true
new Date().constructor===Date   //true

4. jQuery. type () - 만능 이 라 고 합 니 다.
  :      。PS.                  
  :jQuery.type(   )
날짜, 정규, undefined, null 등 을 포함 하여 모두 판단 할 수 있다.
jQuery.type(str)  //string
jQuery.type(num)   //number
jQuery.type(arr)   //array
jQuery.type(obj)  //object
jQuery.type(fn)   //funtion
type of () - 간단 한 데이터 형식 을 판단 할 수 없습니다. 국화 가루 복잡 한 데이터 형식, 예 를 들 어 Object 와 Array 가 되 돌아 오 는 것 은 모두 Object instanceof 입 니 다. 대상 에 만 데이터 형식 을 구분 할 수 있 습 니 다.또한 특정한 인 스 턴 스 가 특정한 구조 함수 의 인 스 턴 스 인지 판단 할 수 있 지만 여러 구조 함수 에 대응 하 는 상황 이 발생 할 수 있 습 니 다. constructor - 모든 데이터 형식 을 판단 합 니 다.물론 그의 본질은 prototyep 속성 이 있 는 함 수 를 계산 하 는 jQuery type () 입 니 다. 모든 데이터 형식 을 판단 합 니 다.
이상 은 저의 간단 한 이해 입 니 다.

좋은 웹페이지 즐겨찾기