js 에서 디지털 속성 명 을 가 진 대상 을 배열 로 변환 합 니 다.

자주 사용 되 지 는 않 지만 대상 에 게 숫자 를 속성 명 으로 하 는 속성 을 추가 할 수 있 습 니 다
 
var obj = {};
obj[0] = 1;
obj[1] = 2;
이 대상 은 배열 형식 이 아 닙 니 다.그러면 배열 형식 으로 바 꿀 방법 이 있 습 니까?jQuery 코드 에서 Array.prototype.slice 를 사용 하여 이 대상 을 배열 로 바 꾸 었 습 니 다.그러나 저 는 여러 번 시 도 했 지만 안 됩 니 다
 
var obj = {};
obj[0] = 1;
obj[1] = 2;
alert(Array.prototype.slice.call(obj));
위의 코드 는 IE 에서 직접 잘못 보 고 했 습 니 다.Firefox 에서 잘못 보 고 는 하지 않 았 지만 출력 내용 은 비어 있 습 니 다.전환 에 실패했다 는 얘 기다.이러한 내 장 된 방법의 문 제 는 ECMA-262 를 찾 는 것 이 좋 습 니 다.slice 방법의 집행 절 차 는 다음 과 같 습 니 다

1. Let A be a new array created as if by the expression new Array().
2. Call the [[Get]] method of this object with argument "length".
여기 서 매개 변수 length 를 언급 했 습 니 다.obj 대상 은 숫자 색인 이 있 지만 length 속성 이 없습니다.문 제 는 바로 여기에 있다.slice 방법 은 이 대상 의 길 이 를 모른다.코드 를 간단하게 수정 하고 length 속성 을 추가 합 니 다.
출력 내용 은"1,2"입 니 다.복사 에 성 공 했 습 니 다.그것 은 slice 방법 을 호출 하 는 this 에 디지털 색인 과 length 속성 이 있 으 면 배열 로 전환 할 수 있다 는 것 을 설명 하 는 것 입 니까?
이 법칙 은 대부분의 브 라 우 저 에서 성립 된다.그러나 IE 환경 에서 Html Collection 과 같은 DOM 요소 의 집합 은 상기 특징 을 가지 더 라 도 slice 를 호출 할 때 오류 가 발생 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기