inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바스크립트 중고급: 엔진 핵심

7. this와 bind() 메소드, function 오브젝트 생성/호출, 파라미터 병합

Array.prototype.slice.call(arguments)에 대한 질문

371

이하영

작성한 질문수 16

1

선생님 안녕하세요. 

파라미터 병합의 예제에 있는 코드 중 

Array.prototype.slice.call(arguments) 에 대해 질문이 있습니다. 

slice 메소드에서 call을 통해 arguments를 this로 참조하기만 하는 게 아닐까요? 

slice메소드가 실행될 배열이 주어진 게 없는 것 같은데,  10, 20이 파라미터로 들어 갔을 때  어떻게 [10, 20] 과 같은 배열의 형태로 반환되는 건지 궁금합니다. 

감사합니다!

javascript

답변 1

1

김영보

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 참조에 대해 조금 더 다룹니다.
}

0

이하영

감사합니다~!

getBook 실습 예제중 질문드립니다!

0

433

1

__proto__ 에 대해 질문드립니다

0

325

1

호이스팅 코딩시간 풀이

0

372

1

[코딩 시간] JS {name: value} 이해

0

347

1

[[Scope]] 와 [[Environment]]는 같은 개념인가요

0

349

0

slice

0

243

0

스코프가 뭔가요?

0

313

0

어려워요

0

260

0

강사님 변수이름에 get을 붙이는 이유를 알고싶습니다.

0

349

1

[정리 시간] 정확하게 이해했는지 확인 부탁드립니다.

0

308

0

스코프 질문

0

258

1

fn 함수와 book.get 함수 차이 질문드립니다...ㅠㅠㅠ

1

553

1

this binding 논리 질문입니다.

0

287

1

파라미터 값을 매핑할 때

0

256

0

ES6부터는 this 바인딩을 환경 레코드에서 참조한다고 들었습니다.

0

212

0

정리시간 입니다.

0

230

0

정리시간입니다.

6

277

0

정리 시간 입니다.

0

208

0

정리시간입니다.

6

234

0

코딩시간 입니다.

1

230

0

선생님 스코프 질문이 있습니다.

1

245

0

[정리시간] 해보았습니다!

0

183

0

선생님 질문있습니다!!

0

162

0

질문드려도 될까요 선생님..

0

221

0