>  기사  >  웹 프론트엔드  >  JavaScript_기본지식 중 indexOf의 사용법과 문제점 정리

JavaScript_기본지식 중 indexOf의 사용법과 문제점 정리

WBOY
WBOY원래의
2016-05-16 18:21:451221검색

이 방법은 많은 프로그래밍 언어에 해당 구현이 있으며 JavaScript도 예외는 아닙니다. 그러나 IE에서 다음 코드를 실행할 때:

코드 복사 코드는 다음과 같습니다.

var arr = [1,2,3]
alert(arr.indexOf(1));
그런데 "개체가 이 속성과 메서드를 지원하지 않습니다"라는 메시지가 표시되었습니다. 크롬과 ff에서는 잘 돌아갑니다. 그래서 Google 전문가에게 물어보니 js의 Array의 indexOf 메소드는 js1.6 버전에서만 구현되었고 IE 8에서는 js1.3 버전만 구현되었으며 chrome은 js1.7 버전, ff는 js1.8이었습니다. 버전. (즉, 여전히 반 비트 더 느립니다). IE용으로 확장할 수밖에 없습니다.

코드 복사 코드는 다음과 같습니다.
Array.prototype._indexOf = function(n){
if("indexOf" in this){
return this["indexOf"](n)
}
for(var i=0;iif(n===this[i]){
return i
}
}
return -1; 🎜>};


은 다음과 같이 사용됩니다.


var arr = ["1","2","3"]
alert(arr._indexOf("2"))


여기서는 Array 프로토타입을 확장했는데, 확장에서는 메서드 이름에 "_" 문자를 추가하는 것이 좋은 습관이라고 생각합니다.
_indexOf 메서드에서는 먼저 현재 Array가 "indexOf" 메서드를 구현하는지 확인합니다. 그렇다면 시스템 메서드를 직접 호출하고, 그렇지 않으면 순회합니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.