제목 다음 문의 출력을 설명해 주세요.
x = {shift:[].shift};
x.shift()
console.info(x.length)
올바르게 대답했다면 이미 Array 함수의 일반적인 응용을 이해하고 있다는 의미입니다. 이 질문을 이해하기 전에 먼저 배열(Array)에 대한 이동의 정의를 이해해야 합니다.
관련 지침은 MDC에 매우 명확하게 설명되어 있습니다
shift는 의도적으로 일반적입니다. 이 메소드는
배열과 유사한 객체에 적용할 수 있습니다.
시리즈의 마지막을 반영하는 길이 속성을 포함하지 않는 객체
0부터 시작하는 연속적인 숫자 속성은
의미 있는 방식으로 동작하지 않을 수 있습니다.
동시에 EMCAScript의 정의는 길이 속성의 변경도 정의합니다. 따라서 기본적으로 위 질문에 대한 답은
0
확산적 사고
아직도 위의 질문을 이해할 수 없다면 Array.prototype의 영향을 더 명확하게 설명할 수 있습니다. 물체의 길이를 이동합니다.
x =
Array .prototype.shift.call(x);
console.info(x.length);
분명히 객체에 대해 길이 속성이 정의되어 있으면 Shift가 자동으로 길이 속성을 추가합니다. 0으로 설정합니다.
이제 우리는 이것을 말했으므로 다음 질문에서 무엇을 출력할지 생각하는 것은 모두에게 맡기겠습니다.
x = 함수(a, b, c ) {} ;
Array.prototype.shift.call(x);
console.info(x.length);
제네릭의 이해
분명히 위의 질문은 어쩌면 나는 아직도 이 글의 제목을 설명하지 못할 수도 있다. 실제로 일반 응용 프로그램은 이전에 설명되었지만 여기서는 "배열과 유사한" 작업에 Array 메서드를 사용하는 방법을 주로 설명합니다.
강제 배열
var args = Array.prototype.slice.call(arguments);
이 사용법은 화성에 가깝지만 이 기간 이전에도 사용되었습니다. 자세한 내용은 여기를 참조하세요.
데이터 반복
Array.prototype.forEach.call(arguments, function(i) {
console.info(i);
})
객체가 다음과 같은 경우 recursed, then exit "전통적인" for, while 및 기타 명령문 외에도 Array의 forEach 속성 사용을 고려할 수도 있습니다(IE는 비극이 될 것입니다). 배열의 forEach 메서드는 여기에 자세히 설명되어 있습니다.
기타 Array 확장 사용법은 여러분의 생각을 펼칠 수 있습니다. 해당 브라우저에 해당하는 Array 구현 방법이 없다면 여기를 참고하세요.
사실 Array 메소드뿐만 아니라 많은 브라우저 네이티브 객체의 메소드도 일반적입니다. 이러한 기능을 완전히 사용하면 코드를 더 명확하게 만들 수 있습니다.
네이티브 메소드를 사용하는 것이 더 효율적입니다.