1. 비구조화 : 예전에는 객체에 데이터를 접근 할때 obj.title 과 같이 했다면, 자바스크립트 최신 문법에서는 그것이 필요가 없다.
// Static Method
const obj = {
title : 'node.js',
value : '올인원 패키지'
}
const arr = [0,1,2]
const {title, value} = obj
const [, b, c] = arr
console.log(title,value)
console.log(b,c)
console.log()
2. Generator
//Node JS비동기 프로그램
//Generator
// yield
// return과는 다른 기능을 사용
function *log(){
console.log(0, yield)
console.log(1, yield)
console.log(2, yield)
}
const gen = log()
gen.next('1')
gen.next('2')
gen.next('3')
const obj = {
*gen() {
let cnt =0;
yield ++cnt;
yield ++cnt;
yield ++cnt;
}
}
const g = obj.gen()
console.log(g.next())
console.log(g.next())
console.log(g.next())
3. time out 에 대한 내용
const timeoutObj = setTimeout(() => {
console.log('first')
},0)
const immediateObj = setImmediate(() => {
console.log('set')
})
const intervalObj = setInterval(() =>{
console.log('good')
},1000)
메모리 누수를 막기 위해서 아래와 같이 타이머를 멈추어 준다
clearTimeout(timeoutObj)
clearImmediate(immediateObj)
clearInterval(intervalObj)
4. Event 내장 함수 사용
- 어떠한 이벤트가 발생 했을때 사용하는 경우
'use strict'
//evnet
const EventEmitter = require('events')
class CharManager extends EventEmitter{}
const chatManager = new CharManager()
chatManager.on("join", ()=> {
console.log("new user joined")
})
chatManager.emit("join")
5. DNS 모듈
내장모듈
const dns = require('dns')
dns.lookup('facelotto.site', (err, address, family) => {
if (err) throw err
console.log(`address ${address}, ${family}`)
})
dns.resolve4('facelotto.site', (err, addresses) => {
if (err) throw err
const res = JSON.stringify(addresses)
console.log(res)
addresses.forEach(a => {
dns.reverse(a, (err, hostnames) => {
if (err) throw err
console.log(`reverse for ${a}; ${JSON.stringify(hostnames)}`)
})
})
})