JavaScript 중급: call, apply, bind

이토니·2024년 1월 11일
1

JavaScript

목록 보기
5/33
post-thumbnail

함수안에서 this를 사용하면서 Window 객체 말고 다른 객체를 참조하게 하는 방법: call, apply, bind

call() 메소드

바로 실행되게, 인수를 직접 넣어서 사용

// Call() with arguments
const fullName = function (city, country) {
    console.log(`${this.firstName}, ${this.lastName}, ${city}, ${country}`);
}

const person1 = {
    firstName: "John",
    lastName: "Doe"
}

fullName.call(person1, "Oslo", "Norway");

apply() 메소드

바로 실행되게, 인수 부분은 배열로 넣어주기

// Apply() with arguments
const fullName = function (city, country) {
    console.log(`${this.firstName}, ${this.lastName}, ${city}, ${country}`);
}

const person1 = {
    firstName: "John",
    lastName: "Doe"
}

fullName.apply(person1, ["Oslo", "Norway"]);

bind() 메소드

함수를 직접 실행하지 않고 반환
따라서 함수를 직접 실행해주어야 한다.

// bind()
function func(language) {
    if (language === "kor") {
        console.log(`language: ${this.korGreeting}`);
    } else {
        console.log(`language: ${this.engGreeting}`);
    }
}

const greeting = {
    korGreeting: "안녕 ",
    engGreeting: "Hello ",
};

const boundFunc = func.bind(greeting);
boundFunc('kor'); // 직접 함수 실행
profile
cool & soft codes

0개의 댓글