자바스크립트/메소드
자바스크립트 apply와 call 메소드
Socratone
2020. 1. 22. 05:50
obj = {val1: 1, val2: 2, val3: 3}
function sumAll() {
let result = 0;
for(key in this) { // this는 obj를 가리킨다.
result = result + this[key];
}
return result;
}
// 첫번째 인자에 객체를 넣으면
// 마치 함수가 객체 안에 들어간 것처럼 돼서
// this로 객체를 접근할 수 있다.
console.log(sumAll.apply(obj)); // 6
// 모든 함수에는 기본적으로 apply 등의 메소드가 제공된다.
// 그래서 함수를 sum.apply() 형태로도 쓸 수 있다.
function sum(a, b) {
return a + b;
}
// 따로 객체를 넣어줄 필요가 없으면 null로 한다.
// 두번째 인자의 배열이 sum 함수에 들어가는 인자가 된다.
console.log(sum.apply(null, [1, 2])); // 3
// apply 대신 call을 쓴다면 배열 대신 순수 인자가 들어간다.
// call(null, 1, 2);