-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
Array.prototype.slice.call(arguments)에 대한 질문
21.05.26 02:44 작성 조회수 237
1
선생님 안녕하세요.
파라미터 병합의 예제에 있는 코드 중
Array.prototype.slice.call(arguments) 에 대해 질문이 있습니다.
slice 메소드에서 call을 통해 arguments를 this로 참조하기만 하는 게 아닐까요?
slice메소드가 실행될 배열이 주어진 게 없는 것 같은데, 10, 20이 파라미터로 들어 갔을 때 어떻게 [10, 20] 과 같은 배열의 형태로 반환되는 건지 궁금합니다.
감사합니다!
답변을 작성해보세요.
1
김영보
지식공유자2021.05.26
window.onload = function(){
debugger;
// 개발자 도구 창에서 one과 two를 펼치면 설정된 [10, 20]의 모습이 같습니다. 즉, 빌트인 Array 오브젝트에서 처리하는 형태와 방법이 같다는 뜻입니다.
var one = [10, 20];
// arguments는 아래와 같은 형태입니다.
var two = {0: 10, 1: 20, length: 2};
// 비기너 과정에서 slice()를 호출하면, 엔진이 Array 인스턴스를 생성하여 slice()를 실행한다고 하였습니다.
var three = [10, 20].slice();
// slice를 호출하면 엔진이 Array 인스턴스를 생성하고, arguments가 {0: 10, 1: 20, length: 2} 형태이므로 [10, 20] 형태로 변환되어 생성한 인스턴스에 설정합니다. 이 모습은 [10, 20].slice()과 같습니다. this가 생성한 Array 인스턴스의 [10, 20]을 참조합니다.
Array.prototype.slice.call(arguments);
// "ES6+" 과정에서 this 참조에 대해 조금 더 다룹니다.
}
답변 1