Hello, Freakin world!

call(), apply(), bind()에 대해서 본문

프로그래밍 언어/Javascript

call(), apply(), bind()에 대해서

johnna_endure 2020. 1. 17. 01:28

간단하게 짚고 넘어가자

이 세가지 메서드들의 용도는 함수 블록에서 this가 가리키는 객체를 명시해주기 위한 용도로 사용된다.


call(), apply()

이 둘은 기능이 같다고 보면 된다.
첫번째 파라미터에 타겟팅할 객체를 넘기고, 메서드에 필요한 인수를 가변인수에 넘길 수 있다.

 

예제

function Person(name, yearCount) {
    this.name = name;
    this.age = 0;
    let incrAge = function () {
        this.age++;
    };
    for (let i = 0; i <= yearCount; i++) {
        incrAge.call(this);
    }
}
let p1 = new Person('최우석', 20);
console.log(`${p1.name}님의 나이 ${p1.age}`);

bind()

이 메서드는 위의 메서드들과 기본적인 기능을 동일하다.
약간 다른 점이 있다면 this가 바인드된 함수를 반환한다는 거다.

예제

function Person(name, yearCount) {
    this.name = name;
    this.age = 0;
    let incrAge = function () {
        this.age++;
    };
    let bindFunc = incrAge.bind(this);
    for (let i = 0; i <= yearCount; i++) {
        bindFunc();
    }
}

let p1 = new Person('최우석', 20);
console.log(`${p1.name}님의 나이 ${p1.age}`);

'프로그래밍 언어 > Javascript' 카테고리의 다른 글

[Node.js] 모듈로 만들기  (0) 2020.01.07
Comments