상세 컨텐츠

본문 제목

[자바스크립트] 생성자 함수와 클래서에서의 정적바인딩

카테고리 없음

by esoesmio 2023. 5. 16. 20:12

본문

1.

function Korean () {
    this.favorite = '김치';

    this.makeStew = function (isHot) {
        return `${isHot ? '매운' : '순한'} ${this.favorite}찌개`;
    };
    this.fryRice = (isHot) => {
        return `${isHot ? '매운' : '순한'} ${this.favorite}볶음밥`;
    };
}

function Italian () {
    this.favorite = '피자';
}

const korean = new Korean();
const italian = new Italian();

console.log(korean.makeStew(true));
console.log(korean.fryRice(true));

italian.makeStew = korean.makeStew;
italian.fryRice = korean.fryRice;

console.log(italian.makeStew(false));
console.log(italian.fryRice(false));

 

// ♻️ 새로고침 후 실행
class Korean {
    constructor () {
        this.favorite = '김치';
        this.fryRice = (isHot) => {
            return `${isHot ? '매운' : '순한'} ${this.favorite}볶음밥`;
        }
    }
    makeStew (isHot) {
        return `${isHot ? '매운' : '순한'} ${this.favorite}찌개`;
    }
}

class Italian {
    constructor () {
        this.favorite = '피자';
    }
}

const korean = new Korean();
const italian = new Italian();

console.log(korean.makeStew(true));
console.log(korean.fryRice(true));

italian.makeStew = korean.makeStew;
italian.fryRice = korean.fryRice;

console.log(italian.makeStew(false));
console.log(italian.fryRice(false));

console.log(
    korean.fryRice.call({favorite: '된장'}, true)
);
console.log(
    korean.fryRice.apply({favorite: '된장'}, [true])
);
console.log(
    korean.fryRice.bind({favorite: '된장'}, true)()
);

 

 

 

 

댓글 영역