>  기사  >  웹 프론트엔드  >  JS 판단 배열에 대한 자세한 소개

JS 판단 배열에 대한 자세한 소개

小云云
小云云원래의
2018-01-25 13:14:071913검색

배열을 판단하는 방법은 무엇인가요? 어떤 친구들은 알아야 하지만, 어떤 친구들은 js가 배열을 어떻게 판단하는지 알 수 없습니다. 아래 편집자는 이 문제에 대한 몇 가지 정보를 수집하고 정리했습니다. 관심 있는 친구들은 JS에 대한 지식을 습득하여 배열을 판단할 수 있기를 바랍니다.

typeof 연산자

typeof는 이 유형의 문자열을 반환합니다

 var a = '123'
 console.log(typeof(a)) //string
 var b = []
 console.log(typeof(b)) //object
 var c = {}
 console.log(typeof(c)) //object
 var d = null
 console.log(typeof(d)) //object

위에서 볼 수 있듯이 배열 개체는 null입니다. 모든 개체를 반환하기 위해 typeof를 사용하면 배열인지 여부를 식별할 수 없습니다.

프로토타입 생성자 체인 메소드

인스턴스화에는 생성자 속성이 객체 배열을 생성하는 메소드를 가리킵니다

 var a = []
 console.log(a.__proto__.constructor) //ƒ Array() { [native code] }
 var b = {}
 console.log(b.__proto__.constructor) //ƒ Object() { [native code] }

위에서 본 것처럼 배열은 Array 함수에 의해 인스턴스화되고 객체는 Object 함수에 의해 인스턴스화됩니다

이 메소드는 다음과 같습니다. 좋습니다. 하지만 생성자 속성을 덮어쓸 수 있습니다.

  var a = []
  a.__proto__.constructor = Object
  console.log(a.__proto__.constructor) //ƒ Object() { [native code] }

객체화 여부를 확인하기 위해 배열로 변환된 것을 볼 수 있으므로 이 방법은 최선이 아닙니다

instanceof

이 방법은 여부를 확인하는 것입니다. 특정 생성자의 프로토타입 속성이 가리키는 객체가 감지할 다른 객체에 있습니다. 객체의 프로토타입 체인에서

  var a = []
  console.log(a instanceof Array) //a对象的原型链上能找到Array true
  console.log(a instanceof Object) //true 原型链上也能找到对象

위의 내용은 배열인지 객체인지 판별하기가 특히 쉽지 않습니다

범용 방법 toString

toString() 메소드는 이 객체를 반영하는 문자열을 반환합니다

  var a= '123'
  console.log(a.toString()) //123
  var b = [1,2,3]
  console.log(b.toSting()) //1,2,3
  var c = {}
  console.log(c.toString)) //[object Object]

객체만 반환되는 것을 볼 수 있습니다. 객체 유형

Returns [객체 유형] 유형은 객체의 유형을 나타냅니다

객체를 확인하려면 Object의 toString 메서드를 가져와 사용합니다

 var a =[]
 Object.prototype.toString.call(a) //[object Array]

이 개체의 toString 메서드는 배열인지 여부를 확인할 수 있습니다

하지만 여기에는 상황이 있습니다. 개체 프로토타입의 toString()도 변경할 수 있습니다

Array.isArray(XX)

개인적으로 저는 여전히 더 안정적인 일반적인 방법인 toString()을 사용합니다

관련 권장 사항:

js는 배열에 문자열 변수가 포함되어 있는지 확인

JavaScript에서 in_array 함수를 사용하여 배열 사용량을 확인하는 방법에 대한 자세한 설명

배열이 비어 있는지 확인하는 PHP의 일반적인 방법(5가지 방법)

위 내용은 JS 판단 배열에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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