분류 전체보기
-
Node.js - 요청과 응답Node.js 2021. 9. 24. 03:31
서버는 클라이언트가 있기에 동작한다. 클라이언트 -> 서버 : 요청 ( request ) 서버 -> 클라이언트 : 응답 ( response ) 즉, 서버는 요청을 받는 부분과 응답을 보내는 작업이 이루어져야 한다. 요청과 응답은 이벤트방식으로 생각하면된다. 클라이언트로부터 요청이 왔을 때 어떤 작업을 수행할지 이벤트 리스너를 미리 등록해야한다. const http = require('http'); http.createServer((req,res)=>{ // 응답을 어떻게 할지 구현 }); http 서버가 있어야 브라우저의 요청을 처리할 수 있다. 때문에, http 모듈을 사용. http 모듈에는 createServer라는 메서드가 존재한다. 인수로 요청에 대한 콜백 함수를 넣을 수 있다. 요청이 들어올 ..
-
모던 자바스크립트 Deep Dive - 프로퍼티 섀도잉 , 교체 , 정적 프로퍼티JavaScript 2021. 9. 23. 22:47
오버라이딩과 프로퍼티 섀도잉 const Person = (function(){ function Person(name){ this.name = name; } Person.prototype.sayHello = function(){ console.log(`Hi! My name is ${this.name}`); }; return Person; }()); const me = new Person('Kim'); me.sayHello = function(){ console.log(`Hello ! My name is ${this.name}`); } me.sayHello(); // Hello ! My name is Kim 위 예시 코드처럼 같은 이름의 프로퍼티를 인스턴스에 추가하게되면 프로토타입 프로퍼티를 덮어쓰는 것이 ..
-
모던 자바스크립트 Deep Dive - 프로토타입 체인JavaScript 2021. 9. 23. 21:43
function Person(name){ this.name = name; } Person.prototype.sayHello = function(){ console.log(`Hi! My name is ${this.name}`); } const me = new Person('Kim'); console.log(me.hasOwnProperty('name')); // true 위 코드에서 Person으로 생성한 객체 me가 hasOwnProperty라는 메서드를 사용하였다. 이것은 me 객체가 Person.prototype 뿐만 아니라 Object.prototype을 상속받았다는 것을 의미한다. 그렇다면 me.prototype은 무엇일까? Object.getPrototype(me) === Person.protot..
-
모던 자바스크립트 Deep Dive - 프로토타입 생성JavaScript 2021. 9. 23. 21:32
프로토 타입의 생성 시점 프로토타입은 생성자 함수가 생성되는 시점에 더불어 생성된다. => 프로토타입과 생성자 함수는 단독으로 존재할 수 없고 언제나 쌍으로 존재하기 때문이다. [ 사용자 정의 생성자 함수와 프로토타입 생성 시점 ] 내부 메서드 [[Construct]]를 갖는 함수 객체 즉, 일반 함수로 정의한 함수 객체는 new 연산자와 함께 생성자 함수로서 호출할 수 있다. 생성자 함수로서 호출할 수 있는 함수가 함수 객체를 생성하는 시점에 프로토타입도 더불어 생성된다. console.log(Person.prototype); // {constructor : f} function Person(name){ this.name = name; } 함수 선언문은 런타임 이전에 자바스크립트 엔진에 의해 먼저 실행..
-
모던 자바스크립트 Deep dive - 프로토타입 ( 리터럴 표기법 )JavaScript 2021. 9. 23. 20:58
리터럴 표기법에 의해 생성된 객체의 생성자 함수와 프로토타입 생성자 함수에 의해 생성된 인스턴스는 프로토타입의 constructor 프로퍼티에 의해 생성자 함수와 연결된다. const obj = new Object(); console.log(obj.constructor === Object); // true 리터럴 표기법에 의해 생성된 객체도 물론 프로토타입이 존재한다. 하지만, 리터럴 표기법에 의해 생성된 객체의 경우 프로토 타입의 constructor 프로퍼티가 가리키는 생성자 함수가 반드시 객체를 생성한 생성자 함수라고 단정할 수는 없다. const obj = {}; console.log(obj.constructor === Object); // true obj 객체는 객체 리터럴 표기법에 의해 생성되..
-
Express - MiddlewareExpress.js 2021. 9. 20. 02:47
const express = require('express'); const app = express(); Express 모듈을 실행해 app 변수에 할당한다. 익스프레스 내부에 http 모듈이 내장되어 있으므로 서버의 역할을 할 수 있다. app.set('port',process.env.PORT || 3000) 서버가 실행될 포트를 설정한다. process.env 객체에 PORT 속성이 존재하면 그 값을 사용하고 없다면 3000을 Port로 사용한다. app.set( 키 , 값 ) 을 사용해서 데이터를 저장할 수 있다. 나중에 데이터를 app.get(키) 로 가져 올 수 있다. app.get('/',(req,res) => { res.send('Hello, Express'); } app.get(주소 , 라..
-
mvc + observerVanilla js 2021. 9. 19. 21:59
MVC 모델은 layered style이다. 아래 레이어는 상위 레이어를 사용하는 것을 권장하지 않는다. a 계층이 b 계층을 사용하면 a 계층은 b 계층에 종속되고 b 계층이 없으면 a 계층은 자신의 역할을 수행할 수 없다. 이러한 관계를 usage dependency 라고 한다. 즉, 상위 계층은 하위 계층에 대해 usage dependency 가 있다. MVC 패턴에 Observer 패턴을 적용시킨다면 Model은 "Observable"이라 할 수 있고, View는 "Observer"라고 할 수 있다. Observable이 변경되면 해당 상태를 Observer에게 알리고 관찰자는 해당 변경사항에 대응할 수 있어야 한다. 컨트롤러는 더 이상 뷰를 업데이트 할 필요가 없고 뷰는 모델에 따라서 업데이트가..
-
Node.js 교과서 - 이벤트 이해하기Node.js 2021. 9. 19. 03:35
이벤트 직접 만들어보기 const EventEmitter = require('events'); const myEvent = new EventEmitter(); myEvent.addListener('event1',() => { console.log('이벤트1'); }); myEvent.on('event2',() => { console.log('이벤트2'); }); myEvent.on('event2',() => { console.log('이벤트 2 추가'); }); myEvent.once('event3', () => { console.log('이벤트 3'); }); myEvent.emit('event1'); myEvent.emit('event2'); myEvent.emit('event3'); myEvent...