Closure란? 외부함수의 변수에 접근할 수 있는 내부 함수를 가리킨다.클로저를 사용하게 되면 전역변수의 오남용을 줄일 수 있는 효과가 있다. function Person() { var _name = 'Jason'; this.showName = function () { console.log(_name); }; } var student = new Person(); student.showName(); console.log(student._name); // 결과값 : Jason, undefined 로컬변수 _name은 private 변수, 즉 외부에서 접근할 수 없는 형태로 오직 showName함수를 통해서만 _name 값을 받아올 수 있다. ※ 클로저는 처리 속도와 메모리 측면에서 성능에 좋은 영향을 끼치..
Javascript prototype inheritance 자바스크립트에서 상속(inheritance)은 prototype을 이용하여 코드를 재사용할 수 있다. new 연산자를 이용한 classical한 방식과 Object.create()를 이용한 prototypal한 방식이 있다. // baseClass function Person() { this.sayJob = false; } // prototype method Person.prototype.say = function () { console.log(this.sayJob ? "Yes" : "No"); }; // subClass function Programmer() { Person.call(this); } Programmer.prototype = Ob..
Object creation patterns ▶ 자바스크립트 Javascript는 Java 와 같이 Class 가 존재하지 않는다.기존의 객체를 복사하여 새로운 객체를 생성하는 프로토타입 기반의 언어이다. 자바스크립트의 가장 큰 특징은 유연함(flexibility)이다.객체를 생성하는데 있어서 여러가지 패턴들을 살펴보겠다. ▶ Factory pattern function InfoFactory(name, age, job) { var person = {}; person.name = name; person.age = age; person.job = job; person.print = function () { console.log('Name: ' + this.name + ', Age: ' + this.age +..
Event Emitter node.js 에서 이벤트를 발생시키고 처리하는 방식인 EventEmitter객체를 상속받아 구현 우선 node.js api 문서를 보고 따라해본다.https://nodejs.org/dist/latest-v7.x/docs/api/events.html#events_eventsvar events = require('events'); var myEmitter = new events.EventEmitter(); // listener 등록 myEmitter.on('customEvent', function(msg) { console.log(msg); }); // event 호출 myEmitter.emit('customEvent', 'Hello EventEmitter'); // 결과값 : H..
Modules node.js application 만들 때 많은 모듈들을 사용하는데 함수표현(function expressions)에 대해 알아보자. ▶ 함수표현 (function expressions) function callName(name) { name(); } // function expressions var person = function() { console.log('Jason'); } callName(person); // 결과값 JasoncallName() 함수 호출시 변수로 지정된 person을 argument로 지정한다.그럼 선언적 함수(function declarations)로 지정된 callName에 name이라는 parameter 값에 person을 대입한다.결과적으로는 person..
Node.js 크롬 v8 javascript engine 위에서 동작하는 javascript 런타임이다.event-driven 및 non-blocking model 을 사용한다.npm은 가장 큰 생태계(ecosystem)의 오픈 소스 라이브러리를 가지고 있다. ▶ node 및 npm 설치node.js 설치 : https://nodejs.org/en/ 에서 다운로드terminal에서 버전 확인 ~ node -v ~ npm -v ▶ node.js 시작하기프로젝트 폴더를 하나 만들고 app.js 파일 생성 console.log('Hello Node.js'); // 결과값 : Hello Node.jsterminal 에서 node app 명령어로 확인 ※ V8 engine(자바스크립트 엔진): 컴퓨터는 javas..