...)를 사용하여 배열 요소들을 펼쳐서 인자로 전달function 더하기(a, b, c) {
console.log(a + b + c);
}
var 어레이 = [10, 20, 30];
// 요즘 방식: Spread Operator
더하기(...어레이); // 결과: 60
더하기.apply(undefined, 어레이); // 결과: 60
참고:
apply의 첫 번째 인자인
undefined는 함수 실행 시 특정 객체에 바인딩하지 않겠다는 의미로 사용합니다.
var person = {
인사: function() {
console.log(this.name + ' 안녕');
}
};
var person2 = {
name: '손흥민'
};
// person 객체의 인사() 함수를 person2의 context로 실행
person.인사.apply(person2); // 출력: "손흥민 안녕"
person.인사.call(person2); // 출력: "손흥민 안녕"
두 번째 인자로 배열을 전달해, 해당 배열의 요소들이 함수의 파라미터로 사용됨
person.인사.apply(person2, [1, 2, 3]);
인자를 직접 나열해 전달함
person.인사.call(person2, 1, 2, 3);
요약:
- apply와 call 모두 함수를 실행할 때 this를 원하는 객체로 지정할 수 있음
- 단, apply는 파라미터를 배열 형태로, call은 콤마로 구분된 형태로 전달한다.