[JS]apply, call 메서드

2025. 1. 13. 09:31·Language/JavaScript

apply

apply는 함수의 메서드이다. JavaScript에서 함수는 객체로 취급되며, 이는 함수가 프로퍼티와 메서드를 가질 수 있다는 것을 의미한다. 따라서 함수는 다른 객체와 마찬가지로 this 컨텍스트를 설정할 수 있으며, apply 메서드를 사용하여 특정 객체를 this로 설정하고, 배열 형태의 인자를 전달하여 호출할 수 있다.

apply 사용법

functionName.apply(thisArg, [argsArray]);

thisArg: 함수가 호출될 때 사용할 this 값이다. 이 값은 함수 내부에서 this로 참조된다.
argsArray: 함수에 전달할 인자들을 포함하는 배열이다. 이 배열의 요소들이 함수의 매개변수로 전달된다.

apply 예제

function introduce(greeting, punctuation) {
    console.log(greeting + ', ' + this.name + punctuation);
}

const person = { name: '신짱구' };

//apply를 사용하여 person을 this로 설정하고 인자를 배열로 전달
introduce.apply(person, ['Hello', '!']); //출력: Hello, 신짱구!

apply 특징

배열 형태의 인자: apply는 인자를 배열로 전달해야 하므로, 여러 개의 인자를 한 번에 전달할 수 있다.
다양한 상황에서 사용: apply는 배열을 인자로 받는 함수에 유용하게 사용될 수 있다. 예를 들어, Math.max와 같은 함수에 배열의 최대값을 구할 때 사용할 수 있다.

const numbers = [1, 2, 3, 4, 5];

//apply를 사용하여 배열의 최대값을 구함
const maxNumber = Math.max.apply(null, numbers);
console.log(maxNumber); //출력: 5

call

call은 함수의 메서드이다. JavaScript에서 함수는 객체로 취급되며, 이는 함수가 프로퍼티와 메서드를 가질 수 있다는 것을 의미한다. 따라서 함수는 다른 객체와 마찬가지로 this 컨텍스트를 설정할 수 있으며, call 메서드를 사용하여 특정 객체를 this로 설정하고, 개별적인 인자를 전달하여 호출할 수 있다.

call 사용법

functionName.call(thisArg, arg1, arg2, ...);

thisArg: 함수가 호출될 때 사용할 this 값이다. 이 값은 함수 내부에서 this로 참조된다.
arg1, arg2, ...: 함수에 전달할 인자들이다. 인자를 개별적으로 나열하여 전달한다.

call 예제

function introduce(greeting, punctuation) {
    console.log(greeting + ', ' + this.name + punctuation);
}

const person = { name: '신짱아' };

//call을 사용하여 person을 this로 설정하고 인자를 개별적으로 전달
introduce.call(person, 'Hi', '!');
//출력: Hi, 신짱아!

call 특징

개별 인자 전달: call은 인자를 개별적으로 전달해야 하므로, 인자의 수가 정해져 있을 때 유용하다.
다양한 상황에서 사용: call은 특정 객체의 메서드를 다른 객체에서 호출할 때 유용하게 사용될 수 있다.

const obj1 = {
    value: 10,
    showValue: function() {
        console.log(this.value);
    }
};

const obj2 = {
    value: 20
};

//obj2의 showValue 메서드를 obj1의 this로 호출
obj1.showValue.call(obj2); //출력: 20

요약

apply 메서드
함수를 호출할 때 this 값을 설정하고, 인자를 배열 형태로 전달한다. 주로 this를 특정 객체로 설정해야 할 때와, 배열의 요소를 함수의 인자로 전달해야 할 때 유용하다.
call 메서드
함수를 호출할 때 this 값을 설정하고, 인자를 개별적으로 전달한다. 주로 this를 특정 객체로 설정해야 할 때와, 인자의 수가 정해져 있을 때 유용하다.

'Language > JavaScript' 카테고리의 다른 글

[JS]Object 객체  (0) 2025.01.17
[JS]this  (0) 2025.01.14
[JS]arguments 객체  (0) 2025.01.10
[JS]let, const, var  (0) 2024.12.30
[JS]템플릿 리터럴(Template Literal)  (1) 2024.12.24
'Language/JavaScript' 카테고리의 다른 글
  • [JS]Object 객체
  • [JS]this
  • [JS]arguments 객체
  • [JS]let, const, var
yxxjxxeee
yxxjxxeee
  • yxxjxxeee
    공부 일지
    yxxjxxeee
  • 전체
    오늘
    어제
    • study N
      • Framework
        • Spring
      • Language
        • JavaScript
        • C | C++
        • JAVA
        • PHP
      • CS
        • 네트워크
        • 자료구조
        • 데이터베이스
        • 운영체제
      • DBMS
        • MySQL
      • 코딩테스트 N
        • 백준 N
        • 프로그래머스
        • LeetCode
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 쇼핑몰 제작 프로젝트(PHP)
    • github
  • 공지사항

  • 인기 글

  • 최근 글

  • hELLO Designed By 정상우
    Version v4.10.2
yxxjxxeee
[JS]apply, call 메서드
상단으로

티스토리툴바