isArray : 배열인지 바로 알기가 왜 이리 어렵죠?
[IT] Ajaxian 2009/01/13 10:10 |
[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] Ajaxian' 카테고리의 다른 글
| IE='\v'=='v' (0) | 2009/01/30 |
|---|---|
| Canvas와 신경망을 사용한 자바스크립트로 하는 CAPTCHA 크래킹 (0) | 2009/01/29 |
| IE8과 9버전에서 추가되는 기능은? (0) | 2009/01/28 |
| 웹 개발 프로젝트 평가하기 (1) | 2009/01/14 |
| isArray : 배열인지 바로 알기가 왜 이리 어렵죠? (3) | 2009/01/13 |
| 자바스크립트 그래프 작성 도구 (1) | 2008/11/10 |
| IE에 WebKit이 적용된다? (1) | 2008/11/10 |
| 50개 이상의 Ajax 예제들 (10) | 2008/11/05 |
| Firefox 3.1에서 HTML 5의 <video>와 <audio> 태그 지원 (0) | 2008/10/28 |
