종종 Array.prototype.slice(arguments, 0);를 볼 수 있습니다. 이 작성 방법은 함수 매개변수 목록을 실제 배열로 변환할 수 있는 function() {} 내에서 사용할 수 있습니다. 예를 참조하세요.
var Slice = Array .prototype.slice;
var toString = Object.prototype.toString;
(function() {
var args = 인수;
console.log(args, toString.call(args)); // [ 1, 2, 3] "[객체 인수]"
var argsArr = Slice(args, 0);
console.log(argsArr, toString.call(argsArr)) // [1, 2, 3 ] "[object Array]"
}(1,2,3))
함수 매개변수 목록 인수가 호출된 후 1초 만에 Array로 변경되는 것을 확인할 수 있습니다. 일부분.
마찬가지로 선택한 DOM 요소를 배열로 변환할 수도 있습니다.
slice.call(document.querySelectorAll("div"));
단서를 따라가며 생각해 봅시다. 슬라이드 메소드가 객체를 객체로 변환할 수 있을까요? 정렬? 예를 참조하세요.
console.log (slice.call( 'string')); // ["s", "t", "r", "i", "n", "g"]
console.log(slice.call(new String('string' ))); // ["s", "t", "r", "i", "n", "g"]
매번 문자열은 배열로 직접 변환됩니다.
단, 숫자와 불리언 값은 빈 배열로 변환됩니다:
console.log(slice.call(33));
console.log(slice.call(true))
일반 객체도 길이 속성을 추가하지 않는 한 빈 배열로 변환됩니다.
console.log(slice.call({name: 'obj'})) // []
console.log(slice.call({0: 'zero', 1: 'one '})); // []
console.log(slice.call({0: 'zero', 1: 'one', name: 'obj', length: 2})) // [" zero", "one "]
또한 배열을 복제하는 데에도 사용할 수 있습니다.
var srcArr = [1,2,3];
var newArr = srcArr.slice(0);
console.log( srcArr, newArr); // [1,2,3] [1,2,3]
console.log(srcArr == newArr) // false