[code:js]
typeof maybeArray == "Array"; // 에, 농담이시죠?
maybeArray instanceof Array; // 어쩌면요
maybeArray.constructor == Array; // 어쩌면요
typeof maybeArray.sort == 'function'; // 비슷합니다
Object.prototype.toString.call(maybeArray) === '[object Array]'; // 딩 동 댕
typeof maybeArray == "Array"; // 에, 농담이시죠?
maybeArray instanceof Array; // 어쩌면요
maybeArray.constructor == Array; // 어쩌면요
typeof maybeArray.sort == 'function'; // 비슷합니다
Object.prototype.toString.call(maybeArray) === '[object Array]'; // 딩 동 댕
자바스크립트를 처음 접하는 사람들은 어떤 객체가 실제로 배열인지 아닌지 알아내는 간단한 방법이 있을 것이라고 생각합니다. 고수들은 저 너머에 있는 위험을 알고 있습니다. 특히, 프레임 사이를 탐색하며 작업할 때의 문제를 말이죠. 자바 진영은 클래스 로더에 이런 문제가 있었는데, 다른 클래스 로더로부터 객체를 가져올 때 이상한 문제가 일어나곤 했습니다.
Kangax씨는 이 문제에 대해 자세히 다루며 기술적으로 새로운 해결책을 제시했습니다. 덕분에 Prototype과 그 외의 라이브러리들이 그들의 코드를 덕 타이핑에서 다음 코드로 바꿀 수 있게되었습니다.
[code:js]
function isArray(o) {
return Object.prototype.toString.call(o) == '[object Array]';
}
function isArray(o) {
return Object.prototype.toString.call(o) == '[object Array]';
}
from isArray: Why is it so bloody hard to get right?
'[IT] Web Tech' 카테고리의 다른 글
IE='\v'=='v' (0) | 2009.01.30 |
---|---|
Canvas와 신경망을 사용한 자바스크립트로 하는 CAPTCHA 크래킹 (0) | 2009.01.29 |
IE8과 9버전에서 추가되는 기능은? (0) | 2009.01.28 |
웹 개발 프로젝트 평가하기 (0) | 2009.01.14 |
isArray : 배열인지 바로 알기가 왜 이리 어렵죠? (3) | 2009.01.13 |
자바스크립트 그래프 작성 도구 (1) | 2008.11.10 |
IE에 WebKit이 적용된다? (1) | 2008.11.10 |
50개 이상의 Ajax 예제들 (0) | 2008.11.05 |
Firefox 3.1에서 HTML 5의 <video>와 <audio> 태그 지원 (0) | 2008.10.28 |
댓글을 달아 주세요
오오, 안그래도 이 문제 관련한 포스팅을 한 번 하려고 했었는데... 훨씬 좋은 글이 있었군요. -ㅅ- 소개 감사~
이런좋은방법이
오늘 시간 나서 테스트 해봤는데...
여전히 IE에서는 multi-frame 이슈가 해결되지 않네요... orz.