>  기사  >  웹 프론트엔드  >  JavaScript를 사용하여 객체가 배열인지 확인

JavaScript를 사용하여 객체가 배열인지 확인

怪我咯
怪我咯원래의
2017-04-08 10:26:081182검색

1. typeof

가장 먼저 생각할 것은 데이터 유형을 감지하기 위해 typeof를 사용하는 것이지만 Function, String, Number, Undefine 등 이러한 기본 유형의 경우 typeof를 사용하여 감지할 수 있습니다. 예를 들어 코드는

function test(){}
console.log(typeof 1); // number
console.log(typeof test); // function 
console.log(typeof "yunxi"); // string
console.log(typeof undefined); // undefined

입니다. 그러나 array 또는 정규 표현식의 경우에는 다음과 같습니다. typeof를 사용하여 감지하면 만족할 수 없습니다. 왜냐하면 배열이나 일반 패턴을 감지하면 반환된 유형은 다음 코드와 같이 objectobject가 되기 때문입니다.

console.log(typeof []);  // object
console.log(typeof /\d+/g); // object

2. Instanceof

이를 통해 객체가 배열의 인스턴스인지 여부를 감지하는 데 인스턴스를 사용하는 것을 쉽게 생각할 수 있습니다. true를 반환하고, 그렇지 않으면 false를 반환합니다. 위의 코드를 살펴보고 배열인지 여부를 확인하겠습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.