>웹 프론트엔드 >JS 튜토리얼 >객체에 길이 속성이 없으면 IE6/IE7_javascript 팁에서 의사 배열(ArrayLike)로 변환할 수 없습니다.

객체에 길이 속성이 없으면 IE6/IE7_javascript 팁에서 의사 배열(ArrayLike)로 변환할 수 없습니다.

WBOY
WBOY원래의
2016-05-16 18:04:191182검색

때로는 다음과 같이 배열을 의사 배열(ArrayLike)로 변환해야 할 때가 있습니다

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

var ary = ['one','two',' three'];
var obj = {}; // 길이 속성 없음
Array.prototype.push. apply(obj, ary);
for(var i in obj){
alert(i ': ' obj[i])
}

IE8/9/ Firefox/Safari/Chrome은 순서대로 obj를 팝업합니다. 키와 해당 값입니다. ArrayLike로 변환할 수 있습니다.
그러나 이는 IE6/7에서는 불가능합니다. obj가 여전히 빈 개체임을 나타내는 정보가 출력되지 않습니다.
obj에 길이 속성을 추가하면 상황이 달라집니다
코드 복사 코드는 다음과 같습니다

var ary = ['one','two',' three'];
var obj = {length:0} // 길이가 있고 값은 0
Array .prototype.push.apply( obj, ary);
for(var i in obj){
alert(i ': ' obj[i])
}

이번에는 IE6/7(모든 브라우저에 키와 해당 값이 표시됨) ArrayLike로 변환할 수 있습니다.
길이에는 다른 값 대신 0 값만 할당할 수 있습니다. 그렇지 않으면 획득한 객체 키와 값은 일대일로 대응되지 않습니다.
코드 복사 코드는 다음과 같습니다.

var ary = ['one',' two', '3'];
var obj = {length:2}; // 0이 아닌 길이가 있습니다
Array.prototype.push.apply(obj, ary); (var i in obj ){
alert(i ': ' obj[i])
}

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.