자바스크립트는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어다. 자바스크립트는 객체지향 언어가 아니라고 오해하는 경우도 있지만 자바스크립트는 클래스 기반 객체지향 프로그래밍 언어보다 효율적이며 더 강력한 객체지향 프로그래밍 능력을 지니고 있는 프로토타입 기반의 객체지향 프로그래밍 언어다.
// 배열의 모든 인스턴스가 사용할 수 있어야 한다.
// 기존의 push와 동일한 동작을 할 수 있어야 한다.
// push는 마지막 요소를 밀어 넣고 length를 반환한다.
Array.prototype.myPush = function (...args) { // args에 값이 배열로 넘어온다.
arguments 객체는 함수에 전달된 인수에 해당하는 “Array 형태”의 객체이다. 여기서 “Array 형태”란, arguments가 length 속성과 더불어 0부터 인덱스된 다른 속성을 가지고 있지만, Array의 forEach, map과 같은 내장 메서드를 가지고 있지 않다는 뜻이다.
디스트럭처링 할당(구조 분해 할당)은 구조화된 배열과 같은 이터러블 또는 객체를 destructuring(비구조화, 구조 파괴)하여 1개 이상의 변수에 개별적으로 할당하는 것을 말한다. 배열과 같은 이터러블 또는 객체 리터럴에서 필요한 값만 추출하여 변수에 할당할 때 유용하다.