자바스크립트 JS 공부 #5 prototype, class

사공 오·2022년 4월 7일
0

JS 공부

목록 보기
5/11
post-thumbnail

프로토타입

객체 생성자로 뭘 만들었을때 그것으로 만든 객체들 끼리 공유할 수 있는 값이나 함수를 설정가능
- 함수를 만들때마다 같은 함수를 계속 만드는게 아니라 한번만 만듦

function Animal(type, name, sound) {
    this.type = type;
    this.name = name;
    this.sound = sound;
}

Animal.prototype.say = function () {
    console.log(this.sound);
}

Animal.prototype.SharedValue = 1;

const dog = new Animal('개', '멍멍이', '멍멍');
const cat = new Animal('고양이', '야옹이', '애옹');

dog.say();
cat.say();

dog.SharedValue;

.call

Animal.prototype.say = function () {
    console.log(this.sound);
}

function Dog(name, sound) {
    Animal.call(this, '개', name, sound); //call -첫인자는 this,다음으로는 그 다른 펑션의 파라미터들 
}

function Cat(name, sound) {
    Animal.call(this, '고양이', name, sound); //객체생성해서 기능구연하게 해줌
}

Dog.prototype = Animal.prototype; //프로토타입 - 공유하기로함
Cat.prototype = Animal.prototype;


const dogg = new Dog('개', '멍멍이', '멍멍');
const catt = new Cat('고양이', '야옹이', '애옹');

첫인자는 this,다음으로는 그 다른 펑션의 파라미터들
객체생성해서 기능구연하게 해줌
프로토타입 - 공유하기



class

이런식으로 클래스없었는데 js에 es6에 class 들어옴 간략하게 할 수 있도록
객체생성자와 프로토타입을 쉽게 사용하기 위해서 만들어진 문법


class ClaAnimal {
    constructor(type, name, sound) { //생성자
        this.type = type;
        this.name = name;
        this.sound = sound;
    }
    say() {
        console.log(this.sound);
   //클래스 상속이 더 쉽다

class Dog extends Animal {
    constructor(name,sound){ //생성자
        super('개', name,sound) //슈퍼를 써서 자신이 상속받은 클래스의 컨스트럭터를 호출한다
    }
}

class Cat extends Animal {
    constructor(name,sound){ //생성자
        super('고양이', name,sound) //슈퍼를 써서 자신이 상속받은 클래스의 컨스트럭터를 호출한다
    }
}

const doggy = new Dog('멍멍이', '멍멍');
const kitty = new Cat('야옹이', '애옹');
const kitty2 = new Cat('야오오옹이이', '애애애애애옹');

doggy.say();
kitty.say();

 }
}

class Food {
    constructor (name){
        this.name =name;
        this.brands =[];
    }
    addBrand(brand){
        this.brands.push(brand) //brands 배열에 집어넣기
    }
    print(){
        console.log(`${this.name} 을/를 파는 음식점들:`);
        console.log(this.brands.join(',')); //배열안에 있는 것들을 쉼표를 기준으로 (문자열로) 합쳐준다
    }
}

const pizza = new Food ('피자');
pizza.addBrand('피자헛');
pizza.addBrand('도미노 피자');

const chicken = new Food ('치킨');
pizza.addBrand('굽네치킨');
pizza.addBrand('BBQ');

pizza.print();
chicken.print();

0개의 댓글