일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- object
- 출처 : https://joshua1988.github.io/web-development/javascript/promise-for-beginners/
- 출처 : https://webdir.tistory.com/506
- http://jeonghwan-kim.github.io/dev/2019/06/25/react-ts.html
- 게시판
- toString
- https://velog.io/@velopert/create-typescript-react-component
Archives
- Today
- Total
Back Ground
NodeJS - 상속 [ES5] 본문
Node.js 상속 방법
require를 통해 util을 불러온다.
util의 inherits 를 이용하여 상속을 할수 있다
방식은
.inherits(상속시킬 대상 ,상속할 것); 을 넣었을때
상속이된다 .
test로
console.log(Calc);를 했을때
super [ function : ]안에 상속을 받는다는것을 알수있다
이때 주의해야 할 점은
상속받은 대상 객체가 상속을 받았다고 해서 상속된 것이 아니라
객체 생성을 해야 상속이 된다.
예제1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | var util = require('util'); var EventEmitter = require('events').EventEmitter; var Calc = function(){ var self = this; //함수의 제 정의 [super EventEmitter] this.on('stop',function(){ console.log('Calc에 stop event 호출'); }); }; // .inherits 상속 util.inherits(Calc,EventEmitter); Calc.prototype.add = function(a,b){ console.log("add 실행"); return a+b; } //객체생성을 해야 상속가능 var calc = new Calc(); calc.add(2,3); calc.emit('stop'); console.log(Calc); //module.exports = Calc; //module.exports.title = 'calculator'; | cs |
console.log(Cacl); 결과
{ [Function: Calc] super_:
{ [Function: EventEmitter]
EventEmitter: [Circular],
usingDomains: false,
defaultMaxListeners: [Getter/Setter],
init: [Function],
listenerCount: [Function] } } |
※주의
이랬을 경우 console.log(Calc()); 이렇게 했을때 객체생성이 되어 있지 않기 때문에 에러가 발생한다.
예제 2)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | var util = require('util'); var Person = function(){ this.name = '장동건'; this.age = 29; } Person.prototype = { play : function(){ console.log('사람이 놀아요'); }, work:function(){ console.log("사람이 일해요"); }, todo:function(){ this.play(); this.work(); } } var Student = function(){ }; Student.prototype = { play : function(){ console.log('학생이 놀아요'); }, } //상속 inherits util.inherits(Student,Person); var pp = new Person(); var st = new Student(); pp.play(); console.log('----------------------'); pp.todo(); console.log(pp.name); st.play(); console.log('----------------------'); st.todo(); console.log(st.name); | cs |
[결과]
사람이 놀아요
사람이 일해요
장동건
학생이 놀아요
----------------------
학생이 놀아요
사람이 일해요 undefined |
이랬을 경우 st.name 는 'undefined'가 나오게 되는데
그건 Person의 tihs로 지정했기에 주소값을 갖고 있지 않기 때문이다.
재정의 ( 오버라이딩 )
Student.prototype = {
play : function(){
console.log('학생이 놀아요');
},
}
이 부분에서 상속받았던 play가 Student에서 지정한 play가 재정의해서
나오게 된다.
이런식으로 최적화 (customizing)시킨다.
'Javascript > Node.js' 카테고리의 다른 글
NodeJS - 파일을 직접 열고 닫으면서 읽거나 쓰기 [ES5] (0) | 2018.09.14 |
---|---|
NodeJS - 파일 읽고 쓰기 [ES5] (0) | 2018.09.14 |
NodeJS - process [ES5] (0) | 2018.09.11 |
NodeJS - [노드에 대해] (0) | 2018.09.05 |
NodeJS - [서버] (0) | 2018.09.05 |
Comments