>  기사  >  웹 프론트엔드  >  JavaScript는 객체가 array_javascript 팁인지 확인합니다.

JavaScript는 객체가 array_javascript 팁인지 확인합니다.

WBOY
WBOY원래의
2016-05-16 15:24:191035검색

이 기사에서는 객체가 배열인지 확인하는 세 가지 JavaScript 방법을 공유합니다.

1. 유형

가장 먼저 생각해 볼 것은 데이터 유형을 감지하기 위해 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

그러나 배열이나 정규 표현식의 경우 typeof를 사용하여 감지하는 것은 만족스럽지 않습니다. 왜냐하면 배열이나 정규 표현식을 감지하면 다음 코드에 표시된 것처럼 반환된 유형이 객체가 되기 때문입니다.

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

2.인스턴스

이를 통해 객체가 배열의 인스턴스인지 여부를 감지하기 위해 objectof를 사용하는 것을 쉽게 생각할 수 있습니다. 이 감지는 배열인 경우 true를 반환하고, 그렇지 않으면 false를 반환합니다. at it again 배열인지 여부를 감지하는 위의 코드는 다음과 같습니다.

console.log([] instanceof Array); // true
console.log(/\d+/g instanceof Array); // false

위에서 볼 수 있듯이, instanceof를 사용하면 실제로 배열 요소인지 확인할 수 있습니다.
3. 생성자 속성

자바스크립트에서 각 객체에는 생성자 속성이 있는데, 이는 알 수 없는 객체의 유형을 결정하는 등 객체를 초기화하는 생성자를 참조하므로 다음과 같은 메소드를 작성할 수 있으며, 코드는 다음과 같습니다.

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 메소드를 호출하여 배열 요소인지 여부를 확인할 수도 있습니다.
이제 두 번째와 세 번째 점에 대해 각각 instanceof 메서드와 생성자 속성을 사용하면 배열인지 여부를 확인할 수 있는 것으로 보이지만 페이지에서 배열을 사용할 때 십자가를 사용할 때와 같은 예외도 있습니다. -frame 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() 메소드 를 사용할 수 있음을 알 수 있습니다. 객체가 배열인지 확인하려면 다음 코드를 사용하세요.

function isArray(obj) {
  return Object.prototype.toString.call(obj) == '[object Array]';
}
// 代码调用
console.log(isArray([])); // true
console.log(isArray([1,2,3])); // true

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");

console.log(arr); // ["1","2","3","4","5"]
console.log(isArray(arr)); // true
위 내용은 JavaScript에서 객체가 배열인지 확인하는 방법을 배우는 데 도움이 되는 이 기사의 전체 내용입니다. 학습에 도움이 되기를 바랍니다.

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