가장 먼저 생각할 것은 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
이로부터 우리는 객체가 객체인지 여부를 감지하기 위해 인스턴스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)를 참고해주세요!