본문 바로가기

자바스크립트/메소드

자바스크립트 apply와 call 메소드

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);