2012-08-22 5 views
1

내가 자바 스크립트에서 독서되었습니다자바 스크립트 초보자 : Array.isArray() 쿼리

  • 이 모든 객체가
  • (예 : 숫자, 문자열, 부울, null의 & 정의되지 않은 등의 프리미티브 제외)입니다 객체는 연관 배열으로 처리 될 수 있습니다.

내가 결론 내 렸던 것으로부터, Array.isArray()는 앞에서 언급 한 예외를 제외하고 모든 경우에 true를 반환해야합니다. 내가 틀린 것은 무엇 이었는가?

감사합니다.

+0

"개체를 연관 배열로 처리 할 수 ​​있음"이 "개체는 연관 배열입니다"를 의미하지는 않습니다. – Gumbo

+0

_ "연관 배열"을 정의하려는 방식에 따라 "연관 배열"로 처리 할 수 ​​있습니다. 명백한 유사성이 있지만 일부 언어의 "연관 배열"에는 JS 객체에없는 특정 특성이 있습니다 (반대의 경우도 마찬가지 임). – nnnnnn

답변

2

개체와 배열간에 차이가 있습니다. 배열은 실제로 배열 개체입니다. 그것은 다른 객체 들과는 다른 방법을 가지고 있습니다. String은 문자열 개체입니다. 그러나 개체가 배열 인 것처럼 개체에 액세스 할 수 있습니다. 당신이 그것이 배열 개체 있다는 것을 의미하지 않는다

obj['value1']; 
obj['value2']; 

같은 값을 얻을 수 있습니다

var obj = { 
    value1: 'Some Value', 
    value2: 'Some Other Value' 
    }; 

다음과 같은 목적을 가지고, 그것은 그냥

끝나면 IsArray 액세스하는 다른 방법이() 객체가 배열 객체인지 확인합니다. 액세스 할 수없는 경우 과 같은 배열

1

배열 (자바 스크립트의 [[Class]] 유형)은 연관 배열 (추상 데이터 유형)과 같지 않으며 Array.isArray({}).toString.call(obj) === "[object Array]"과 같이 객체가 일반 배열인지 확인합니다.

  1. Type (arg)이 Object가 아닌 경우 false를 반환합니다.
  2. arg의 [[Class]] 내부 속성 값이 "Array"이면 true를 반환합니다.
  3. false를 반환합니다.
관련 문제