JavaScript의 apply() 메서드는 call() 메서드와 거의 동일하게 작동합니다. 두 메서드 모두 함수를 호출할 때 this 값을 지정할 수 있다는 점이 같습니다.
가장 큰 차이점은 매개변수를 전달하는 방식입니다. call() 메서드는 인수를 하나씩 나열해서 전달하는 반면, apply() 메서드는 함수의 매개변수를 배열 형태로 전달받습니다.
apply() 메서드 기본 문법
func.apply(thisArg, [argsArray])
- thisArg: 함수 내부에서 this로 참조될 객체
- argsArray: 함수에 전달할 인수들을 담은 배열 또는 유사 배열 객체
예제 코드
다음 코드를 직접 실행하면서 apply() 메서드의 구현 방법을 확인해 보세요. 배열에 담긴 여러 숫자 중 최댓값을 구하는 예제입니다.
<html>
<head>
<script>
document.write("배열 목록에서 가장 큰 숫자: ");
document.write(Math.max.apply(null, [50, 90, 18, 87]));
</script>
</head>
<body>
</body>
</html>실행 결과
배열 목록에서 가장 큰 숫자: 90
코드 설명
위 예제에서 Math.max.apply(null, [50, 90, 18, 87])는 배열의 요소들을 마치 Math.max(50, 90, 18, 87)처럼 개별 인수로 펼쳐서 전달합니다. 그 결과 네 개의 숫자 중 가장 큰 값인 90이 출력됩니다.
이처럼 apply() 메서드는 배열 데이터를 개별 인수로 변환하여 함수에 전달해야 할 때 매우 유용하게 활용됩니다. 특히 Math.min(), Math.max()처럼 여러 개의 인수를 받는 함수와 함께 자주 사용됩니다.