JS 판단 배열 의 6 가지 방법 에 대한 상세 한 설명

2845 단어 자바 script
JS 에서 배열 은 Object 형식 에 속 합 니 다. 즉, 인용 형식 에 속 합 니 다.
따라서 인용 유형 에 대해 서 는 type of 로 구체 적 인 유형 을 판단 할 수 없습니다. 돌아 오 는 것 은 모두 'object' 이기 때 문 입 니 다.
이어서 나 는 여섯 가지 판단 방법 을 소개 하고 이 여섯 가지 방법 을 하나하나 해석 할 것 이다.
① instanceof 연산 자 판단
용법: arr instanceof Arrayinstanceof 는 주로 특정한 인 스 턴 스 가 특정한 대상 에 속 하 는 지 판단 하 는 데 사 용 됩 니 다.
function obj(){}
let o1 = new obj();
console.log(o1 instanceof obj);  // true

그러면 우 리 는 instanceof 로 배열 을 판단 하 는 방법 은 다음 과 같다.
let arr = [];
console.log(arr instanceof Array); // true

그러나. instanceof 한 가지 문제 가 있 을 것 이다.
그것 의 문 제 는 전체 적 으로 실행 되 는 환경 만 있다 고 가정 하 는 것 이다.웹 페이지 에 여러 프레임 워 크 가 포함 되 어 있다 면 실제로 존재 합 니 다.
두 개 이상 의 서로 다른 전역 실행 환경,
따라서 두 개 이상 의 서로 다른 버 전의 Array 구조 함수 가 존재 합 니 다.한 프레임 워 크 에서 다른 프레임 워 크 로 배열 을 전송 하면 들 어 오 는 배열 과 두 번 째 프레임 워 크 에서 원생 으로 만 든 배열 은 각각 다른 구조 함 수 를 가지 고 있 습 니 다.
② 대상 구조 함수 의 constructor 판단
용법: arr. constructor = = Array Object 의 모든 인 스 턴 스 는 구조 함수 constructor 가 있 습 니 다. 현재 대상 을 만 드 는 함 수 를 저장 합 니 다.
function obj(){}
let o1 = new obj();
console.log(o1.constructor === obj);  // true

위 에서 보 듯 이 obj 의 인 스 턴 스 o1 의 constructor 는 obj 대상 과 같 습 니 다. 그러면 우 리 는 이것으로 배열 을 판단 할 수 있 습 니 다.
let arr = [];
console.log(arr.constructor === Array); // true

③Array 원형 체인 의 isPrototypeOf
용법: Array. prototype. isPrototypeOf (arr) Array. prototype 속성 은 Array 구조 함수 의 원형 을 나타 내 는 방법 중 하 나 는 isPrototypeOf () 입 니 다. 한 대상 이 다른 대상 의 원형 체인 에 존재 하 는 지 테스트 하 는 데 사 용 됩 니 다.
let arr = [];
console.log(Array.prototype.isPrototypeOf(arr)); // true

④Object.getPrototypeOf
용법: Object. getPrototypeOf (arr) = = Array. prototypeObject. getPrototypeOf () 방법 으로 지정 한 대상 의 원형 을 되 돌려 줍 니 다.
그래서 Array 의 원형 과 비교 하면 됩 니 다.
let arr = [];
console.log(Object.getPrototypeOf(arr) === Array.prototype); // true

⑤Object.prototype.toString
용법: Object. prototype. toString. call (arr) = = '[object Array]'
Array 도 Object 에서 계승 되 었 지만 js 는 Array. prototype 에 toString 을 다시 썼 고 우 리 는 toString. call (arr) 을 통 해 실제 프로 토 타 입 체인 을 통 해 호출 되 었 습 니 다.
let arr = [];
console.log(Object.prototype.toString.call(arr) === '[object Array]'); // true

⑥Array.isArray
용법: Array. isArray (arr) ES5 에 Array. isArray 방법 이 추가 되 었 습 니 다. IE8 및 이하 지원 되 지 않 습 니 다.
Array. isArray (arg) isArray 함 수 는 매개 변수 arg 가 필요 합 니 다. 매개 변수 가 대상 이 고 class 내부 속성 이 "Array" 라면 불 값 true 를 되 돌려 줍 니 다.그렇지 않 으 면 false 로 돌아 갑 니 다.다음 절 차 를 사용 합 니 다:           Type (arg) 이 Object 가 아니라면 false 로 돌아 갑 니 다.           arg 의 [[Class] 내부 속성 값 이 "Array" 라면 true 로 돌아 갑 니 다.           false 로 돌아 갑 니 다.
let arr = [];
console.log(Array.isArray(arr)); // true

좋은 웹페이지 즐겨찾기