-
[Node] Prototype vs Class 차이점 알아보기Javascript/Node 2020. 10. 13. 12:29728x90반응형
먼저 Prototype을 활용한 서버 생성 소스
const http = require('http'); // 서버 생성 const server = http.createServer((req, res) => { // 요청에 대한 결과를 보낼 때 200일 경우 정상 작동 res.statusCode = 200 // 해당하는 데이터로 어떠한 것을 보냈는지 명시적으로 선언 res.setHeader('Content-type', 'text/html'); // html 문서를 리턴한다. // 종료 res.end('<dvi>Hello World</div>'); }) // 명시적으로 포트를 외부에서 받음 //const port = process.env.PORT // 테스트 화면을 띄우기 위해 임의의 포트 번호 작성 const port = 3000; server.listen(port, () => { console.log(`Server running at port ${port}`); }) // Prototype이란? // 기본적으로 어떠한 객체 또는 함수가 있을 때 기존의 속성들을 모두 그대로 복사하여 새로운 객체나 함수 // 기존의 객체와 함수를 바탕으로 새로운 함수를 만드는 데 사용 // prototype은 화살표 함수를 사용하지 않고 기존 함수를 사용하는 것이 더 직관적 function fullstack (backend, frontend) { this.backend = backend this.frontend = frontend // prototype 명시적 선언 // 내부 클로저 함수(함수 내부의 함수) 선언 // 내부 함수가 외부 함수에 접근할 수 있다. // 화살표 함수에서의 this를 바인딩 할 수 없다. // 화살표 함수 내부의 this는 해당 내부의 this가 아닌 글로벌 객체의 this fullstack.prototype.setBackend = () => this.backend = backend; fullstack.prototype.getBackend = () => this.backend; fullstack.prototype.setFrontend = () => this.frontend = frontend; // 마지막 frontend는 파라미터로 받은 fullstack.prototype.getFrontend = () => this.frontend; } const Fullstack = new fullstack('javascript(back)', 'javascript2(front)'); console.log(Fullstack.getBackend()); console.log(Fullstack.getFrontend());
다음은 Class를 활용한 소스
class fullStack { // 초기화 constructor(backend, frontend) { this.backend = backend this.frontend = frontend } // function 키워드 없이 함수 정의 // get 정의 getBackend() { return this.backend } getFrontend () { return this.frontend } // 초기화 이후의 함수 호출로 인해 업데이트 될 수 있어 set 정의 // 파라미터가 필요함 // 이유? 해당하는 부분의 파라미터가 별도의 함수로 호출됨 // contructor는 new 클래스로 선언될 때만... setBackend (backend) { this.backend = backend } setFrontend (frontend) { this.frontend = frontend } } const FullStack = new fullStack('javascript(back)','javascript(front)') console.log('set 이전(최초 생성 후 fullstack)') console.log(FullStack); FullStack.setBackend('back : js'); FullStack.setFrontend('front : js'); console.log('set 이후 각각 back / front') console.log(FullStack.getBackend()); console.log(FullStack.getFrontend()); console.log('set 이후 fullstack)') console.log(FullStack);
Class 사용 시 소스가 훨씬 간단해 지는 것을 알 수 있다.
728x90반응형'Javascript > Node' 카테고리의 다른 글
[Node] Crawling puppeteer 활용하여 웹페이지에 스크린샷을 자동으로 생성하기 (0) 2020.10.13 [Node] Class 활용하여 express 선언하기 (0) 2020.10.13 [Node] http 모듈 이용하여 서버 구축하기 (0) 2020.10.13 [Node] Promise.race 사용해보기 (0) 2020.09.29 [Node] promise.all 사용해보기 (0) 2020.09.28