Page 28 -
P. 28

Zero.prototype = Object.create(Human.prototype);
                 Zero.prototype.constructor = Zero; // 상속하는 부분
                 Zero.prototype.sayName = function() {
                   alert(this.firstName + ' ' + this.lastName);
                 };
                 var oldZero = new Zero('human', 'Zero', 'Cho');
                 Human.isHuman(oldZero); // true


               Human 생성자 함수가 있고, 그 함수를 Zero 생성자 함수가 상속합니다. Zero 생성자 함수를 보면
               상속받기 위한 코드가 상당히 난해하다는 것을 알 수 있습니다. Human.apply와 Object.create 부
               분이 상속받는 부분입니다.

               위 코드를 클래스 기반 코드로 바꿔보겠습니다.

                 class Human {
                   constructor(type = 'human') {
                     this.type = type;
                   }


                   static isHuman(human) {
                     return human instanceof Human;
                   }

                   breathe() {
                     alert('h-a-a-a-m');
                   }
                 }

                 class Zero extends Human {
                   constructor(type, firstName, lastName) {
                     super(type);
                     this.firstName = firstName;
                     this.lastName = lastName;
                   }


                   sayName() {
                     super.breathe();
                     alert(`${this.firstName} ${this.lastName}`);
                   }
                 }

                 const newZero = new Zero('human', 'Zero', 'Cho');
                 Human.isHuman(newZero); // true

         74





     node_06.indd   74                                                                      2020-07-14   오전 11:02:01
   23   24   25   26   27   28   29   30   31   32   33