2012-08-23 3 views
2

을 찾는데 실패 내가 사파리 6.0의 다음과 같은 자바 스크립트 평가할 때 :사파리 배열 같이 IndexOf 아무것도

Array.indexOf([1,2,3],3) 

그것은 기본적으로 3 배열에없는 것을 말하고, -1을 반환합니다!

그러나 파이어 폭스에서 제대로 반환 2.

나는 그것이 존재하고 그것을 정의하지 않을 경우 경우 테스트 코드를 가지고 있으므로 사항 Array.indexOf은 비교적 새로운 기능입니다 것을 알고있다. 그러나이 기능은 Safari에 내장되어 있습니다.

이 버그입니까? 아니면 잘못된 것입니까?

편집 : 실제로이 문제는 단순화 된 버전입니다. 나는 실제로 TR의 TD 셀의 인덱스를 찾기 위해 노력하고있는 중이 야 무엇 :

var tr = td.parentNode 
var col = Array.indexOf(tr.cells,td) 

tr.cells

indexOf이 없습니다. 그러나 Array.indexOf을 사용하면 적어도 Firefox에서이를 처리 할 수 ​​있습니다. Safari에서는 이것이 작동하지 않습니다.

나는 실제로 cellindex를 사용할 수 있다고 생각하지만, 정의되지 않았다면 어떻게 색인을 얻는가?

[1,2,3].indexOf(3); 

을이 학술 질문이 아니라면 : 의도처럼 사용하지 않는 이유가 궁금하네요

답변

7

. 이 경우 실제로는 버그 특별한 Firefox 구현입니다. Array.prototype 버전을 직접 사용하려면

Array.prototype.indexOf.call([1,2,3], 3); 
+0

허, 그게 좋은 질문입니다. 외관상으로는 나가 그것을 만난 첫번째보기에서 사용 된 그것을 보는 방법이고 Firefox에서 일했다 그래서 다만 찔렀다. 실제로 이것은 파이어 폭스의 "버그"일 것임에 틀림 없다. 당신이 지적한 적절한 방법은 Safari에서 작동합니다. – Michael

+0

글쎄, 왜'indexOf'가 Array 함수 자체의 속성이 될 수 없습니까?) – raina77ow

+0

좋아,이 간단한 내 질문에 작동하지만 원래 문제가 아닙니다. 나는 그것을 반영하기 위해 나의 질문을 업데이트하고있다. – Michael