본문 바로가기
javaScript

js에서 메서드 오버로딩 구현하기 - arguments

by mooyou 2024. 1. 21.
728x90
300x250

메서드 오버라이딩은 동일한 이름을 가진 여러개의 메서드가 매개변수 타입과 개수에 따라 동작하는 것을 의미한다.

 

function add(x, y) {
  return x + y;
}

function add(x, y, z) {
  return x + y + z;
}

console.log(add(2, 3)); // 결과: NaN
console.log(add(2, 3, 4)); // 결과: 9

 

하지만 자바스크립트에서는 따로 오버로딩 기능을 제공하지 않고있다. 따라서 같은 이름의 매개변수를 여러개 선언할 경우 위의 코드와 같이 나중에 선언된 것이 이전에 선언된 것을 덮어쓰게 된다.

 

대신 js에서 arguments객체를 이용해서 오버로딩과 비슷한 효과를 낼수가 있다.

function add() {
  let sum = 0;
  for (let i = 0; i < arguments.length; i++) {
    sum += arguments[i];
  }
  return sum;
}

console.log(add(2, 3));        // 결과: 5
console.log(add(2, 3, 4));     // 결과: 9
console.log(add(1, 2, 3, 4, 5)); // 결과: 15

 

위의 코드와 같이 add함수는 매개변수를 명시적으로 정의하지 않아지만 함수 내에서 arguments 객체를 이용해서 전달된 모든 인자를 더하는 방식으로 처리한다. 이렇게 하면 함수가 다양한 수의 인자를 처리할 수 있게 된다.

주의할 점은 'arguments'객체는 배열이 아니기 때문에 배열 메서드를 직접 사용할 수는 없다.

 

arguments 설명

https://moo-you.tistory.com/541

 

arguments란? javaScript

arguments란? 전달 인자라고도 하며 매개변수의 모든 정보가 담겨있는 객체이다. 매개변수가 함수 선언 시 작성되는 변수라면 argument는 함수가 호출될 때 전달되는 값이다.. 배열은 아니지만 배열

moo-you.tistory.com

 

728x90
반응형

댓글