하루5분코딩"Inheritance"

HwangSoonhwan·2020년 10월 28일
0

Inheritance(상속)

var Human = function(name){
	this.name = name;//프로퍼티
}
Human.prototype.sleep = function(){//메소드 생성
	console.log('졸려');
}
var harry = new Human('harry');//인스턴스 생성
harry.sleep()//졸려
harry.__proto__ === Human.prototype //true;

✓harry 에 Human을 상속한 것이다. 그래서 harry 는 Human의 method 를 사용할수 있다.

좀더 자세한 코드로 상속의 예를 보자.

Class 가 생기기 이전

var Human = function(name){
	this.name = name;//프로퍼티
}
Human.prototype.sleep = function(){//메소드
  console.log('졸려');
}
var harry = new Human('harry');//인스턴스
//자식클래스생성
function Student(name){
  Human.call(this,name);
}
Student.prototype = new Human();
Student.prototype.constructor = Student;
Student.prototype.wake = function(){
  alert('일어나');
}
var banini = new Student('banini');
banini.sleep(); //졸려
banini.wake();// 일어나

✓ 3가지를 꼭!!!! 해줘야한다!!!!

  • 상속해주기

  • 자식 클래스의 this 값 맞춰주기

  • 부모 클래스의 this 값 맞춰주기

    - 상속 해주기

    Student.prototype = Object.create(Human.prototype);

    - 자식 클래스의 객체 방향 맞춰주기

    Student.prototype.constructor = Student;

    - 부모 클래스의 객체 방향 맞춰주기

    Human.call(this,name);//call 대신 apply도 가능 

Class 사용

class Human{
	constructor(name){
      this.name = name;
    }
  sleep(){
   console.log('졸려');
  }
}
var harry = new Human('harry');
class Student extends Human {
  constructor(name){
    super(name);
  }
  wake(){
  alert('일어나');
  }
}
var banini = new Student('banini');
banini.sleep();
banini.wake();

✓ 2가지를 꼭!!!! 해줘야한다!!!!

  • 상속해주기

  • 부모 클래스의 this 값 맞춰주기

    - 상속 해주기

    class Student extends Human 

    - 부모 클래스의 객체 방향 맞춰주기

     super(name)
profile
👨‍🍳요리사의 "쿠킹" 스토리가 아닌 "코딩" 스토리💻

3개의 댓글

머야 여기 어떻게 코딩을 5분만에 한다는거야 순 사기꾼이네

1개의 답글