자바 스 크 립 트 는 변 수 를 배열 로 판단 하 는 방법 입 니 다.

4579 단어 JavaScript전단
1 사용Array.isArray()방법
Array 유형 인지 아 닌 지 를 가장 간단하게 판단 하 는 방법.
var arr = [1, 2];
Array.isArray(arr);    // true

2 사용instanceof판단instanceof한 대상 이 구조 함수 인지 아 닌 지 를 판단 하 는 인 스 턴 스 이 고 변수 가 Array 인지 아 닌 지 를 판단 하 는 인 스 턴 스 입 니 다.예 를 들 어:
var arr = [1, 2];
arr instanceof Array    // ture

그러나 이러한 문제 가 존재 합 니 다.만약 에 하나의 유형 이 Array 류 를 계승 했다 면 이런 유형의 모든 실례 화 대상 은instanceof을 사용 하여 Array 인지 아 닌 지 를 판단 하 는 실례 가 모두 true 이기 때문에 사용instanceof이 반드시 100%정확 한 것 은 아 닙 니 다.예 를 들 어:
function myFun(){};
//     Array
var proto = Object.create(Array.prototype);
myFun.prototype = proto;
proto.constructor = myFun;

var obj = new myFun();
obj instanceof Array;    // true

위의 예 에서 볼 수 있 듯 이 obj 는 my Fun 류 의 실례 화 대상 이지 만instanceof을 사용 하여 Array 의 실례 로 판단 한다.
3 사용constructor또는__proto__판단
원리:한 유형의 실례 화 대상constructor은 그 구조 함수 가 바로 이 클래스 를 가리 키 고__proto__는 그 구조 함수 의 원형 대상 을 가리킨다.
모든 배열 은 Array 류 의 실례 화 대상 이기 때문에constructor또는__proto__으로 판단 할 수 있 습 니 다.예 를 들 어:
var arr = [1, 2];
arr.constructor === Array;    // true
arr.__proto__ === Array.prototype;   // true

4 사용Object.prototype.toString.call()이 방법 은 Object 원형 대상 의 toString 방법 을 호출 하 는 것 입 니 다.이 방법 은 대상 의 내부 속성[[Class]]을 되 돌려 줍 니 다.하나의 문자열[object type]을 결과 로 합 니 다.그 중에서type은 대상 의 유형 입 니 다.반면calltoStringthis방향 을 바 꾸 는 데 사용 된다.방법 은 해당 하 는 식별 자 를 표지 대상 의 유형 으로 되 돌려 줍 니 다.인 스 턴 스:
var arr = [1, 2];
Object.prototype.toString.call(arr) === '[object Array]';    // true

//          
var obj = {}
Object.prototype.toString.call(obj);    // '[object Object]'
var bool = false;
Object.prototype.toString.call(bool);   // '[object Boolean]'
var num = 1;
Object.prototype.toString.call(num);   // '[object Number]'
var str = 'a';
Object.prototype.toString.call(str);   // '[object String]'
var symbol = Symbol();
Object.prototype.toString.call(symbol);   // '[object Symbol]'
Object.prototype.toString.call(null);   // '[object Null]'
Object.prototype.toString.call(undefined);   // '[object Undefined]'

좋은 웹페이지 즐겨찾기