![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cZWea7/btqCoRsDZ3n/YU1DWAB9gYQ9wWtaqTXa70/img.jpg)
다형성이란 부모 클래스의 프로퍼티를 자식 클래스에서 다형적으로 가질 수 있음을 의미한다. 다형성 class Vehicle { constructor() { this.engines = 1; } iginition() { console.log("engine is up!"); } drive() { this.iginition(); console.log("Vehicle drive!"); } } class Car extends Vehicle { constructor() { super(); this.wheels=4; } drive(){ console.log(this.wheels, 'Car drive!'); } } class SpeedBoat extends Vehicle{ constructor(){ super(); thi..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/2YoYm/btqCjeQaYcC/ZgOJekF9T5eyJ38CLFNSbk/img.jpg)
프로퍼티 나열을 객체에서 할 때 기억해야 할 것이 있다. 객체 프로퍼티 나열에는 순서가 없다는 것. 프로토타입 체인 관계에서 내가 모르는 프로퍼티가 존재할 수 있다는 것. for...in과 Object.keys 다른 사람이 만든 객체 o2가 있다고 하자. const o1 = { c: 3 }; const o2 = { a: 1, b: 2, d: 4 }; Object.setPrototypeOf(o2, o1); o2의 프로퍼티를 나열해보면 for (let prop in o2) { console.log(`${prop}: ${o2[prop]}`); } // a: 1 // b: 2 // d: 4 // c: 3 c는 o2에 없었지만 상위 프로토타입에 있기 때문에 출력되는 것을 알 수 있다. 프로토타입 체인 어딘가에 내..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/AS4nN/btqClze4FXm/w8LpavXo9HpmwITbs3mX90/img.jpg)
ES6에서 생겨난 개념. iterator와 generator. generator는 iterator에 의존하는 개념이기 때문에 iterator부터 시작하자. iterator의 'iterate'는 '순회하다.'라는 뜻이다. 뜻에서 짐작할 수 있듯이 배열이나 객체의 값을 순회하는 역할이다. 어떻게 순회하는지 확인해보자. iterable의 대표적인 예인 배열부터 보면 const book = [ "hi", "i'm", "a developer" ]; iterator는 values() 메서드를 써서 이터레이터를 만들 수 있다. const it = book.values(); next() 메서드를 써서 순회를 진행할 수 있다. console.log(it.next()); // { value: 'hi', done: fals..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dO51p7/btqCjRNVMbf/Ny3katc1SQwrY7he4EOSK0/img.jpg)
ES6에서 새롭게 추가된 데이터 구조 2개가 있다. 맵과 셋. 맵은 객체와 유사하고, 셋은 배열과 유사하다. 그 차이점이 뭘까? Map 객체의 역할은 KEY와 VALUE를 연결하는 역할이다. 그런데 객체에는 몇 가지 한계들이 있다. 1. 프로토타입 체인 때문에 의도하지 않은 연결이 생길 수 있다. 2. 객체 안에 연결된 키와 값이 몇 개나 되는지 쉽게 알아낼 수 있는 방법이 없다. 3. 키는 반드시 문자열이나 심볼이어야 하므로 객체를 키로 써서 값과 연결할 수 없다.. 4. 객체는 프로퍼티 순서를 보장하지 않는다. 맵은 위에서 나열한 4가지 문제점을 모두 극복해냈다. 코드를 보면서 확인해보자. Map 인스턴스는 new연산자를 이용해서 만든다. const u1 = {name: 'Cynthia'}; cons..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/MAP5Y/btqClyUcXu5/rSGo638TZnRYSGaJIxQHUk/img.jpg)
서로 다른 인덱스가 둘 다 사용 가능할 경우 mongoDB는 어떤 Plan을 선택할까? 상황을 가정해보자. 먼저 다음과 같은 2개의 documents가 있고 name이라는 single field Index가 있고 name과 age의 combination field Index가 있다. 이름이 "Manu"고 나이가 30인 사람을 찾는다고 하면 db.customers.find({name: "Manu", age:30}); name에 대한 인덱스도 사용가능하고 name_age에 대한 인덱스도 사용 가능하다. 이와 같은 상황에서 mongoDB는 어떤 인덱스를 선택할까? db.customers.explain("allPlansExecution"). find({name:"Manu", age:29})를 실행하면 "winn..
- Total
- Today
- Yesterday
- mongoose
- 다중상속
- 이중 연결리스트
- static method
- 선형리스트
- 집합
- Node.js
- mixin
- alias
- index
- virtuals
- Iterator
- 자료구조
- express-session
- resave
- set
- saveUnitialized
- map
- instance method
- javascript
- pm2 #cluster #Javascript
- 자료구조 #딕셔너리 #해시
- 맵
- 다형성
- query helper
- MongoDB
- Generator
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |