목록언어 (28)
설모의 기록
예전에 node.js 로 서버를 구현할 때 Promise 를 얼핏 보았는데 어떻게 사용하는지를 몰라서 넘겼던 것을 이제야 공부하고 정리하네요 :)우선 아래의 예제를 보겠습니다.import fs = require('fs'); function loadJSONSync(filename: string) { return JSON.parse(fs.readFileSync(filename)); } // json 파일이 정상적으로 존재할 때 console.log(loadJSONSync('good.json')); // 파일이 존재하지 않아 loadJSONSync() 메소드가 에러를 발생할 때 try { console.log(loadJSONSync('absent.json')); } catch (err) { console.lo..
What's up with the IIFEThe js generated for the class could have been:클래스를 이용해 생성된 코드이다.function Point(x, y) { this.x = x; this.y = y; }Point.prototype.add = function (point) { return new Point(this.x + point.x, this.y + point.y); };The reason its wrapped in an Immediately-Invoked Function Expression (IIFE) i.e.즉시 실행함수 표기법으로 감싸진 이유는(function () { // BODY return Point; })();has to do with inherit..
superNote that if you call super on a child class it is redirected to the prototype as shown below:만약 자식 클래스에서 super 를 호출했다면 프로토타입으로 리디렉션된다.class Base { log() { console.log('hello world'); } } class Child extends Base { log() { super.log() }; }generates:var Base = (function () { function Base() { } Base.prototype.log = function () { console.log('hello world'); }; return Base; })();var Child = (f..
ClassesThe reason why it's important to have classes in JavaScript as a first class item is that:자바스크립트에서 일급 객체로서 클래스들을 사용하는게 왜 중요한지에 대한 이유가 나와있다. Classes offer a useful structural abstractionProvides a consistent way for developers to use classes instead of every framework (emberjs,reactjs etc) coming up with their own version.Object Oriented Developers already understand classes. 클래스들은 유용한 구조적..
Index SignaturesAn Object in JavaScript (and hence TypeScript) can be accessed with a string to hold a reference to any other JavaScript object.자바스크립트나 타입스크립트에서 객체는 다른 자바스크립트 객체에 대한 참조를 가지고 있는 string 으로 접근 가능하다. Here is a quick example:let foo:any = {}; foo['Hello'] = 'World'; console.log(foo['Hello']); // World We store a string "World" under the key "Hello". Remember we said it can store any J..
대학교 유니티 강의를 들을 때 GameManager 스크립트를 만들면서 싱글톤에 대해 살짝 배웠는데, 그때는 중요한지도 모르고 어려워서 넘겼던 개념인데,,회사에 다니면서 직접 싱글톤으로 코드를 구현하다보니 정말 중요한 패턴이라는 것을 꺠달았습니다.싱글톤 패턴은 어떤 특정 클래스의 인스턴스를 단 하나만 생성하는 것입니다. 따라서 동일한 클래스를 이용해 인스턴스를 여러개 생성해도 처음 생성한 인스턴스를 공유하게 되는 것입니다.싱글톤 패턴은 여러 언어에서 사용되지만, 지금은 자바스크립트를 기반으로 설명드리겠습니다.자바스크립트에서 객체를 생성하는 방식은 두가지가 있습니다. 각 방법마다 싱글톤을 구현하는 방법을 설명드리겠습니다. 1. 리터럴 방식리터럴 방식으로 생성을 한다면 그 자체가 싱글톤 패턴입니다. 변수 o..
자바스크립트의 함수는 객체이기 때문에 프로퍼티를 가질 수 있습니다. 이 점을 이용해 함수에 프로퍼티를 추가해 결과 값을 캐시하고, 다음 호출 지점에 그 연산을 반복하지 않고 캐시된 프로퍼티의 값을 반환해주는 패턴을 메모이제이션 패턴이라고 합니다.예를 들어, 파라미터로 양의 정수값을 넣으면 1부터 파라미터 값까지의 합을 구하는 함수를 구현하려고 합니다. 위의 예제처럼 함수를 구현해도 되지만, 만약 addFunc (1) ~ addFunc(10000) 을 모두 구하고 싶다면 굉장히 많은 반복문을 돌아야 합니다. 이럴 떄 메모이제이션 패턴을 이용해 구현을 하면 반복문을 최소화할 수 있습니다. 위의 예제처럼 구현한다면, cache[number - 1] 에 값이 있을 때 그 값을 가져와 number 와 더해준 후 ..
스크립트 언어인 자바스크립트는 클래스 개념이 없습니다. 그러나 함수를 이용해 클래스처럼 구현할 수 있고, 객체를 생성할 수 있습니다. 자바스크립트에서의 함수의 특징은 일급객체라는 것과 유효범위를 생성한다는 것입니다. 우선 자바스크립트에서 함수는 일급객체입니다. 일급 객체란 다음의 목록이 모두 가능한 객체를 말합니다.변수나 데이터 구조 안에 담을 수 있다.인자로 전달할 수 있다.반환 값으로 사용할 수 있다.런타임에 생성할 수 있다.할당에 사용된 이름과 관계 없이 고유하게 식별할 수 있다. 자바스크립트에서는 자바와는 달리 for 문같은 반복문을 구현해도 그 안에서의 유효범위, 즉 스코프가 생성되지 않습니다. 이 말은 반복문 안에서 생성한 변수는 반복문 밖에서도 사용할 수 있다는 말입니다. 그러나 함수를 이용..