YArray.test

1282 단어 htmlSafari
Y.Array 봐.테스트할 때 이런 문구를 발견했어요.
YArray.test = function(o) {
    var r = 0;
    if (Y.Lang.isObject(o)) {
        if (Y.Lang.isArray(o)) {// , 。
            r = 1;
        } else {
            try {
                // indexed, but no tagName (element) or alert (window),
                // or functions without apply/call (Safari
                // HTMLElementCollection bug).
                if ((LENGTH in o) && !o.tagName && !o.alert && !o.apply) {// o length, tagName ( Dom ), window, apply 
                    r = 2;
                }

            } catch (e) {}
        }
    }
    return r;
};
 
 
주석을 보니 사파리의 버그를 극복하는 것 같다.
그래서 이런 문장을 찾았다.
http://www.cnblogs.com/lecaf/archive/2011/04/02/2002985.html
입소문을 탄 호사도 논의했다.
 
var divs = document.getElementsByTagName('div');
    alert(typeof divs);
    alert(divs.length);

이 코드는 Safari 아래에서 볼 수 있습니다. divs의 type은function입니다.
하지만 divs 자체는 NodeList입니다.
 
그럼 divs 자체가 NodeList인데 왜 굳이 그의 apply 방법이 없다고 판단해야 합니까?
 
보통 length 속성이 있는 function을 방지하기 위해서 NodeList를 사칭하는 것 같아요.

좋은 웹페이지 즐겨찾기