2022년 12월 5일 월요일

[Javascript] call, apply, bind

JS에서는 함수 호출 방식과 관계없이 this를 지정할 수 있음


const mike = {

    name: 'Mike',

};


const tom = {

    name: 'Tom',

}


function showThisName() {

    console.log(this.name);

}


showThisName();    // 아무것도 나오지 않음

showThisName.call(mike);    // Mike

showThisName.call(tom);    // Tom

// 함수.call()의 인자로 객체를 넘기면 this에 할당됨


function update(birthYear, occupation) {

    this.birthYear = birthYear;

    this.occupation = occupation;

}


update.call(mike, 1999, 'singer');

update.call(tom, 2002, 'teacher');


update.apply(mike, [1999, 'singer']);

update.apply(tom, [2002, 'teacher']);


const updateMike = update.bind(mike);

// mike 객체가 할당되어 update기능을 수행하는 updateMike라는 함수를 만듦


댓글 없음:

댓글 쓰기