상속 , prototype , 클래스 2

박상훈·2022년 7월 25일

user.hasOwnProperty

const user = {
name: 'mike'
}
user.hasOwnProperty('name') // true 가 나옵니다

객체에 요소가 있는지 알아볼 수 있는 함수
객체는 hasOwnProertyu 에 프로토 타입을 가지고있습니다.

상속 프로토

클래스 상속을 사용하면 클래스를 다른 클래스로 확장할 수 있습니다.

기존에 존재하던 기능을 토대로 새로운 기능을 만들 수 있죠.

class

class User2 {
  constructor(name,age) { // 인자를 전달해줌
    this.name = name; // 객체를 초기화
    this.age = age;
  }
  showName() {
    console.log(this.name);
  }
}

const tom = new User2("Tom" ,19)

new 를 통해 호출 했을때 내부에서 정의된 내용으로
객체를 생성합니다.
이때 constructor 는 객체를 만들어주는 생성자 메소드 입니다.

‘extends’ 키워드

class Animal {
  constructor(name) {
    this.speed = 0;
    this.name = name;
  }
  run(speed) {
    this.speed = speed;
    alert(`${this.name} 은/는 속도 ${this.speed}로 달립니다.`);
  }
  stop() {
    this.speed = 0;
    alert(`${this.name} 이/가 멈췄습니다.`);
  }
}

let animal = new Animal("동물");

메소드 오버라이딩(method overriding)

class Car {
  constructor(color) {
    this.color = color;
    this.wheels = 4;
  }
  drive() {
    console.log('drive..');
  }
  stop() {
    console.log('Stop!');
  }
}

class Bmw extends Car {
  park() {
    console.log("PARK");
  }
  stop() {
    super.stop(); // Stop! 이 출력됩니다.
    console.log('OFF');
  }
}

z4.stop() // OFF 가 출력되고 덮어쓰게 됩니다.

super

부모의 메소드를 그대로 사용하고 싶을경우
super를 사용해주면 , 메소드 오버라이딩이 사용됩니다.

profile
다들 좋은 하루 되세요

0개의 댓글