함수를 호출하는 방법은 여러가지다. 아래는 기본적인 호출 방법
function func(){
}
func()
자바스크립트에서 함수는 객체다. 객체는 속성이 있다. 그 속성에 값이 있다면 프로퍼티고 함수가 있다면 메서드가 된다. 위 예제에서 func는 Function이라는 객체의 인스턴스다. func는 부모의 메서드를 상속받는다.
function sum(arg1, arg2){
return arg1 + arg2
}
console.log(sum.apply(null, [1,2])) // 3
apply라 내장 메소드를 호출하고 첫 번째 인자로 null, 두 번째 인자로 1,2가 담긴 배열을 넣는다.
apply를 사용하는 방법을 알아보자. (this와 연관되어 있는데 this 정리하면서 다시...)
let obj1 = {val1:1, val2:2, val3:3}
let obj2 = {v1:10, v2:50, v3:100, v4:25}
function sum(){
let _sum = 0;
for(let name in this){
_sum += this[name];
}
return _sum;
}
console.log(sum.apply(obj1)) // 6
console.log(sum.apply(obj2)) // 185
함수 sum은 _sum라는 값을 return한다. 함수 안에는 for in문으로 _sum에 값을 더 해주는 데 this라는 객체의 값을 꺼낸다. 아직 this는 정의되지 않았다. this는 호출할 때 정의된다.
apply 메소드를 호출하는데 null대신 객체 obj1과 obj2를 인자로 주었다. 그 인자는 함수가 실행될 때 this가 된다.
==> apply는 this하면서 다시 공부!