>  기사  >  웹 프론트엔드  >  웹 개발에서 배열을 감지하는 방법

웹 개발에서 배열을 감지하는 방법

php中世界最好的语言
php中世界最好的语言원래의
2018-06-04 10:20:271331검색

이번에는 웹 개발에서 배열을 감지하는 방법과 웹 개발에서 배열을 감지할 때 주의 사항이 무엇인지 보여드리겠습니다. 실제 사례를 살펴보겠습니다.

JS에서 가장 오래된 도메인 간 문제 중 하나는 프레임 간에 배열을 앞뒤로 전달하는 것입니다. 개발자들은 이 시나리오에서 Array 인스턴스가 항상 올바른 결과를 반환하지 않는다는 사실을 빠르게 발견했습니다. 위에서 언급했듯이 각 프레임에는 자체 Array 생성자 가 있으므로 한 프레임의 인스턴스가 다른 프레임에서 인식되지 않습니다. 더글러스 크록포드(Douglas Crockford)는 "오리 타이핑" 인터페이스(duck Typing)의 사용을 처음으로 권장했습니다. "오리 타이핑"은 작가 James Whitcomb Riley가 처음으로 제안한 개념이었습니다. 즉, "오리처럼 걷고, 헤엄치고, 꽥꽥거리는 새가 오리." 기본적으로 "객체가 무엇인지"보다는 "객체가 무엇을 할 수 있는지"에 초점을 맞추세요.

// 采用鸭式辨型的方法检测数组function isArray(value) {  return typeof value.sort === "function";
}

이 감지 방법은 배열이 sort() 메서드를 포함하는 유일한 개체라는 사실에 의존합니다. 물론 isArray()에 전달된 매개변수가 sort() 메서드를 포함하는 객체인 경우에도 true를 반환합니다.

JS에서 배열 유형을 감지하는 방법에 대한 많은 연구가 있었고 마침내 Juriy Zaytsev(Kangax라고도 함)가 우아한 솔루션을 생각해 냈습니다.

function isArray(value) {  return Object.prototype.toString.call(value) === "[object Array]";
}

Kangax는 값에 대해 내장 toString() 메서드를 호출하면 모든 브라우저에서 표준 string 결과가 반환된다는 사실을 발견했습니다. 배열의 경우 배열 인스턴스가 생성된 프레임에 관계없이 반환되는 문자열은 "[object Array]"입니다. Kangax가 제공한 솔루션은 빠르게 인기를 얻었으며 대부분의 JS 클래스 라이브러리에서 채택되었습니다.

이 방법은 내장 개체를 식별할 때 종종 매우 유용하지만 사용자 정의 개체에는 이 방법을 사용하지 마십시오. 예를 들어 내장 JSON 객체와 함께 이 메서드를 사용하면 "[object JSON]"이 반환됩니다.

이후 ECMAScript5는 Array.isArray()를 JS에 공식적으로 도입했습니다. 유일한 목적은 값이 배열인지 여부를 정확하게 감지하는 것입니다. Kangax의 함수와 마찬가지로 Array.isArray()도 프레임 간에 전달되는 값을 감지할 수 있으므로 현재 많은 JS 라이브러리가 이 메서드를 유사하게 구현합니다.

이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트기타 관련 기사를 주목하세요!

추천 자료:

웹 개발에서 이벤트 처리 규칙은 무엇입니까

웹 개발에서 전역 변수 사용을 피해야 하는 이유

위 내용은 웹 개발에서 배열을 감지하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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