JavaScript는 객체가 배열인지 여부를 결정합니다.

黄舟
풀어 주다: 2017-02-24 13:09:49
원래의
861명이 탐색했습니다.


1. typeof

가장 먼저 생각할 것은 typeof를 사용하여 데이터 유형을 감지하는 것이지만 Function, String, Number와 같은 기본 유형에 대해서는 정의되지 않은 등. typeof를 사용하여 감지할 수 있습니다. 예를 들어 코드는 다음과 같습니다.

function test(){}
console.log(typeof 1); // number
console.log(typeof test); // function 
console.log(typeof "yunxi"); // string
console.log(typeof undefined); // undefined
로그인 후 복사

그러나 배열이나 정규식의 경우 typeof를 사용하여 감지하면 만족스럽지 않습니다. 또는 정규 표현식을 사용하면 다음 코드와 같이 반환된 유형이 객체가 됩니다:

console.log(typeof []);  // object
console.log(typeof /\d+/g); // object
로그인 후 복사

2.Instanceof

이로부터 우리는 객체가 객체인지 여부를 감지하기 위해 인스턴스of를 사용하는 것을 쉽게 생각할 수 있습니다. 예를 들어, 이 감지는 부울을 반환합니다. 배열이면 true를 반환하고, 그렇지 않으면 다음과 같이 배열인지 감지하는 코드를 살펴보겠습니다. >

console.log([] instanceof Array);  // true
console.log(/\d+/g instanceof Array); // false
로그인 후 복사

위와 같이 볼 수 있습니다. instanceof를 사용하면 실제로 배열 요소인지 확인할 수 있습니다.

3. 생성자 속성

JavaScript에서는 각 객체에 생성자 속성이 있습니다. 는 알 수 없는 객체의 유형을 결정하는 등 객체를 초기화하는 생성자를 말하므로 다음과 같이 메소드를 작성할 수 있으며 코드는 다음과 같습니다.

function isArray(obj) {
    return typeof obj == 'object' && obj.constructor == Array
}
// 测试demo
console.log(isArray([])); // true
var a = {"a":1};
console.log(isArray(a)); // false

var b = [1,2,3];
console.log(isArray(b)); // true
console.log(isArray(/\d+/g));// false
로그인 후 복사

위에서 볼 수 있듯이 또한 isArray 메서드를 호출하여 배열 요소인지 여부를 확인합니다.

이제 두 번째와 세 번째 점에 대해 각각 인스턴스 오브 메소드와 생성자 속성을 사용하면 배열인지 여부를 확인할 수 있는 것으로 보이지만 크로스를 사용하는 경우와 같은 예외도 있습니다. 프레임 iframe 페이지에서 배열을 사용하는 경우 서로 다른 iframe에서 생성된 배열이 서로 프로토타입 속성을 공유하지 않기 때문에 실패합니다. 다음 코드 테스트를 통해 확인할 수 있습니다~

var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
xArray = window.frames[window.frames.length-1].Array;       
var arr = new xArray("1","2","3","4","5");
//这个写法IE下是不支持的,标准浏览器firefox,chrome下有

console.log(arr);  // 打印出 ["1", "2", "3", "4", "5"]
console.log(arr instanceof Array); // false 
console.log(arr.constructor === Array); // false
로그인 후 복사
위 방법을 사용하면 됩니다. 객체가 배열인지 확인할 방법은 없지만 ECMA262에서는 Object.prototype.toString.call() 메서드를 사용하여 다음 코드를 통해 확인할 수 있습니다. 🎜> 위 내용은 객체가 배열인지 판단하는 JavaScript의 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!