Map
키-value 형태의 데이터를 저장한 순서대로 모아놓은 자료구조
function Map() {
let items = {}
// this 로 함수를 선언할 경우
// 함수에 수정사항이 생겼을 때
// Map 으로 만든 인스턴스 각각을 수정해주어야 한다.
// prototype 으로 선언하면
// 인스턴스를 만들 때마다 메서드를 새롭게 생성하지 않고
// 원본 함수에 선언된 메서드를 참조하여 사용한다.
// 때문에 낭비를 줄일 수 있다.
Map.prototype.has = function (key) {
return key in items
}
Map.prototype.set = function (key, value) {
items[key] = value
}
Map.prototype.remove = function (key, value) {
if (this.has(key)) {
delete items[key]
return true
}
return false
}
Map.prototype.get = function (key) {
if (this.has(key)) {
return items[key]
} else {
return undefined
}
}
Map.prototype.values = function () {
let values = []
for (let key in items) {
values.push(items[key])
}
return values
}
Map.prototype.clear = function () {
items = {}
}
Map.prototype.size = function () {
return Object.keys(items).length
}
Map.prototype.keys = function () {
return Object.keys(items)
}
}