목록ES6/Syntax (6)
Front-end_dev
const log = console.log; const isIterable = a => !!(a && a[Symbol.iterator]); function *flatten(iter) { for(const a of iter) { // if(!isIterable(a)) for(const b of a) yield b; if(!isIterable(a)) yield* b; else yield a; }} function *map(f, iter) { for(const a of iter) yield f(a);} const flatMap = (f, iter) => flatten(map(f,iter)); log([...flatten([[1,2], [3,4]])]);// [1,2,3,4]log([...flatMap(a =>..
Javascript V8 Engine은 C++기반으로 만들어져있다.javasript에서 object의 property를 런타임시에 동적으로 마음대로 바꿀수잇다. 그럼 C++도 가능하다는뜻인데..함수포인터로간단하게 구현할수있다.아마 V8 Engine은 javascript object들을 map형태 혹은 다른 자료구조(테이블형식)로 관리하지않나 싶다. Javascript const str1 = 'this';const str2 = 'isfunction'; class C { m1() { console.log('foo'); } [str1]() { console.log('bar'); } [str1 + str2]() { console.log('baz'); }} C++ #include #include #include ..
GenTwoDimArr() 함수는 초기에 입력받은 파라미터로 2차원 배열을 생성하고 각 row가 초기에 입력받은 col값을 넘어섰을때 에러를 강제시킴. const GenTwoDimArr = (row,col) => { let arr = []; for(let i=0; i col) // if length of array is overflowed, it will be force to generate error return false; else { target[property] = value; return true; } } }); } for(let i=0; i
123456789101112131415161718192021222324252627282930313233343536373839404142// #1function myFunc() { return new Promise( (resolve, reject) => { console.log('start!'); setTimeout( () => { resolve('timed out'); },5000) }) } myFunc().then(value => { console.log(value) return myFunc();}).then(value => { console.log(value);}) // #2function myFunc(count = 0) { if(count { console.log('start!' + count); ..
아직 정식으로 최종(final release)되어 사용 할 수 있는 기능은 ES6(ES2015)까지 입니다. decorator는 나중에 나올 ES7의 새로운 feature이며, babel같은 트랜스파일러로 사용 해 볼 수 있습니다. 우선 decorater는 클래스 그 자체를 오버라이드(확장) 하거나, 클래스 내부의 프로퍼티(메서드)를 오버라이드(확장) 하는 것이라고 볼 수 있습니다. 첫번째 예제에서는 doSomething을 실행하기전, describe함수가 실행됩니다. 각 파라미터들은,target = classname = doSomethingdescriptor = property descriptor입니다. 신기하게도 descriptor.value는 doSomething값을 갖고있고, writable, e..
현재 진행중인 개인 프로젝트가 하나있는데 로직을 하나하나 구현할때마다 자꾸 flag같은 변수들(부산물들)이 나와서 이것을 한번 고쳐보자 해서 고안한 패턴입니다. 예를들어, 문제를 한 번 내보겠습니다.상황1 : 나는 라이브러리 개발자이고 현재 만들고있는 라이브러리에서는 A라는 객체의 B라는 프로퍼티에 C값이 들어갔을 때 D라는 동작을 해야한다. 솔루션 : 일단, C값이 들어왔을때 B라는프로퍼티가 그걸 인지할수있어야겠죠? 그리고나서 기본동작을 오버라이딩하고 D동작을 구현합니다. 그럼 여기서 방법은 수백가지가 될 수 있어요. 저는 처음에는 그중 하나인 flag같은 변수들을 만들어서 해결했었습니다.근데 이런 부산물들이 계속나오게되는데 문제가 안될수도있긴 합니다만, 코딩실력은 더 좋아지진 않을 것 같습니다. ES..