isArray()함수(JavaScript 에서 대상 유형 을 판단 하 는 몇 가지 방법)

1)type:of 연산 자 type:of 는 1 원 연산 자 이 며,결 과 를 되 돌려 주 는 것 은 연산 수 형식 을 설명 하 는 문자열 입 니 다.예 를 들 어"number","string","boolean","object","function","undefined"(변수 가 존재 하 는 지 판단 하 는 데 사용).그러나 type:of 의 능력 은 한계 가 있 습 니 다.Date,RegExp 형식 에 대해 서 는 모두"object"를 되 돌려 줍 니 다.type:of{};/"object" typeof []; // "object" typeof new Date(); // "object"그래서 대상 과 원본 유형 을 구별 할 때 만 유용 합 니 다.대상 유형 과 다른 대상 유형 을 구분 하려 면 다른 방법 을 사용 해 야 합 니 다.예 를 들 어 instanceof 연산 자 나 대상 의 constructor 속.2)instanceof 연산 자.instanceof 연산 자 는 왼쪽 의 연산 수 를 대상 으로 하고 오른쪽 연산 수 는 대상 류 의 이름 이나 구조 함수 입 니 다.object 가 class 나 구조 함수 의 인 스 턴 스 라면 instanceof 연산 자 는 true 로 돌아 갑 니 다.object 가 지정 한 클래스 나 함수 의 인 스 턴 스 가 아니 거나 object 가 null 이면 false 로 돌아 갑 니 다.예 를 들 어:[]instanceof Array;/true [] instanceof Object; // true [] instanceof RegExp; // false new Date instanceof Date; // true 따라서 대상 이 배열 형식 인지 인 스 턴 스 of 연산 자 를 사용 하여 판단 할 수 있 습 니 다:function isArray(arr){return arr instanceof Array;}3)constructor 속성.JavaScript 에 서 는 대상 마다 constructor 속성 이 있 습 니 다.이 대상 을 초기 화 하 는 구조 함 수 를 참조 하여 알 수 없 는 대상 의 유형 을 판단 하 는 데 사 용 됩 니 다.지식 을 구 하 는 값 을 지정 하면 type:of 연산 자 를 통 해 원시 값 인지 대상 인지 판단 합 니 다.대상 이 라면 constructor 속성 을 사용 하여 유형 을 판단 할 수 있 습 니 다.그래서 배열 을 판단 하 는 함수 도 이렇게 쓸 수 있 습 니 다:function isArray(arr){return typeof arr=="object"&arr.constructor==Array;}많은 경우,우 리 는 instanceof 연산 자 나 대상 의 constructor 속성 을 사용 하여 대상 이 배열 인지 아 닌 지 를 검사 할 수 있 습 니 다.예 를 들 어 많은 자 바스 크 립 트 프레임 워 크 는 이 두 가지 방법 으로 대상 이 배열 형식 인지 아 닌 지 를 판단 하 는 것 이다.그러나 크로스 프레임 워 크(cross-frame)페이지 의 배열 을 감지 하 는 데 실 패 했 습 니 다.서로 다른 프레임 워 크(iframe)에서 만 든 배열 이 서로 prototype 속성 을 공유 하지 않 기 때문이다.예 를 들 어
 
<script>
window.onload=function(){
var iframe_arr=new window.frames[0].Array;
alert(iframe_arr instanceof Array); // false
alert(iframe_arr.constructor == Array); // false
}
</script>

<body>
<iframe></iframe>
</body>
Ajaxian 에서 정확 한 검 측 방법 을 보 았 습 니 다.크로스 프로 토 타 입 체인 에서 toString()방법:Object.prototype.toString()을 호출 합 니 다.위의 크로스 프레임 문 제 를 해결 할 수 있다.Object.prototype.toString(o)을 실행 하면 다음 절 차 를 수행 합 니 다.1)대상 o 의 class 속성 을 가 져 옵 니 다.2)연결 문자열:"[object"+결과(1)+"]"3)결 과 를 되 돌려 줍 니 다(2)예 를 들 어 Object.prototype.toString.call([]);/"[object Array]"Object.prototype.toString.call(/reg/ig)을 되 돌려 줍 니 다.//"[object RegExp]"로 돌아 가면 우 리 는 건장 한 판단 대상 이 배열 인지 아 닌 지 를 판단 하 는 함 수 를 쓸 수 있 습 니 다.prototype.js 의 한 관리자 가 다음 함 수 를 썼 습 니 다.대상 의 유형 명 functiongetClass(object) { return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1]; }; 확장,각종 대상 유형 검사 에 사용:
 
function isArray(arr)
{
return Object.prototype.toString.call(arr) === "[object Array]";
}

좋은 웹페이지 즐겨찾기