>  기사  >  웹 프론트엔드  >  `typeof`가 JavaScript 배열에 대해 \"Object\"를 반환하는 이유는 무엇입니까?

`typeof`가 JavaScript 배열에 대해 \"Object\"를 반환하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-02 19:18:31651검색

Why Does `typeof` Return

JavaScript의 배열 유형 이해: typeof가 "Array" 대신 "Object"를 반환하는 이유는 무엇입니까?

JavaScript는 다음과 같은 흥미로운 동작을 나타냅니다. typeof 연산자는 객체 배열에 대해 "객체"를 반환합니다. 이는 다음 코드와 같은 시나리오에서 관찰할 수 있습니다.

$.ajax({
  url: 'http://api.twitter.com/1/statuses/user_timeline.json',
  data: { screen_name: 'mick__romney' },
  dataType: 'jsonp',
  success: function (data) {
    console.dir(data); // Array[20]
    alert(typeof data); // Object
  },
});

위 코드에서 데이터는 Twitter 상태를 나타내는 개체의 배열입니다. console.dir()은 유형이 "Array"라고 보고하지만 typeof는 "Object"를 반환합니다.

이 동작은 JavaScript 배열이 기술적으로 객체라는 사실에서 비롯됩니다. 이는 Object 프로토타입에서 상속받습니다. 즉, 객체와 유사한 속성과 메서드를 소유한다는 의미입니다. 이 상속은 typeof의 "객체" 결과를 담당합니다.

변수가 실제로 JavaScript의 배열인지 확인하려면 다음과 같은 몇 가지 신뢰할 수 있는 메서드가 있습니다.

1. 인스턴스 오브 연산자:

var isArr = data instanceof Array;

2. Array.isArray() 메서드:

var isArr = Array.isArray(data);

3. Object.prototype.toString.call() 메서드:

isArr = Object.prototype.toString.call(data) == '[object Array]';

4. jQuery isArray() 함수(jQuery를 사용하는 경우):

var isArr = $.isArray(data);

이러한 메서드는 배열과 다른 유형의 객체를 구별할 때 typeof보다 더 정확한 결과를 제공합니다. 이러한 대안을 활용함으로써 개발자는 동작 유형으로 인한 혼란 없이 JavaScript에서 배열을 사용하여 자신있게 작업할 수 있습니다.

위 내용은 `typeof`가 JavaScript 배열에 대해 \"Object\"를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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