노드에서 프로토타입과 상속처리에 대한 질문입니다.

노드에서 프로토타입과 상속처리에 대한 질문입니다.

아직 프로토타입을 잘 다루지 못하는지라.. 아래 소스코드에서 잠깐 막혔습니다.

왜 오류가 발생하는지 확인좀 부탁드립니다;;

발생하는 문제 및 실행환경

자바스크립트의 프로토타입과 상속관계

에러메시지

TypeError: obj3.sayHello1 is not a function
    at Object.<anonymous> (C:\Users\DEV05\Desktop\nodejs\workspace\hello_basic\h
ello_inherit.js:50:6)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)
    at startup (node.js:134:18)
    at node.js:962:3

소스코드

var util = require('util');

//define Parent Class
var Parent = function(){
  this.sayHello1 = function(){
      console.log('1 :: Parent Origin :: sayHello1()');
  };
};
Parent.prototype.sayHello2 = function(){
    console.log('2 :: Parent Prototype :: sayHello2()');
}

//define Child Class
var Child = function(){
    this.sayHello3 = function(){
      console.log('3 :: Child Origin :: sayHello3()');
  };
};
Child.prototype.sayHello4 = function(){
    console.log('4 :: Child Prototype :: sayHello4()');
}

//use Parent's Function by Parent
var obj1 = new Parent();
console.log('============================================');
console.log('[log] obj1 :: ', obj1);
obj1.sayHello1();
obj1.sayHello2();

//use Parent's Function by Child
var obj2 = new Child();
console.log('============================================');
console.log('[log] obj2 :: ', obj2);
obj2.sayHello3();
obj2.sayHello4();

//apply inherits
util.inherits(Child, Parent);
console.log('============================================');
console.log('[log] Parent :: ', Parent);
console.log('[log] Child :: ', Child);
console.log('[log] Parent.prototype :: ', Parent.prototype);
console.log('[log] Child.prototype :: ', Child.prototype);


//show inherited Child
var obj3 = new Child();
console.log('============================================');
console.log('[log] apply inherits Parent() to Child() ');
obj3.sayHello1();  //error
obj3.sayHello2();  //error

1답변

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.