>  기사  >  웹 프론트엔드  >  ECMAScript6_javascript 스킬의 Map/WeakMap에 대한 자세한 설명

ECMAScript6_javascript 스킬의 Map/WeakMap에 대한 자세한 설명

WBOY
WBOY원래의
2016-05-16 15:55:241152검색

JS 객체 자체는 키-값 구조입니다. ES6에 Map을 추가해야 하는 이유는 무엇인가요?

1. 지도

1. 지도 생성자

먼저 Map의 간단한 사용법을 살펴보겠습니다

// 字符串作为key, 和JS对象类似
var map = new Map()
// set
map.set('name', 'John')
map.set('age', 29)
// get
map.get('name') // John
map.get('age') // 29

이 코드를 사용하면 JS 객체만큼 간결하지 않은 것 같습니다

하지만 Map의 장점은 키가 어떤 유형이든 될 수 있다는 것입니다

// 对象作为key演示
var xy = {x: 10, y: 20}  // 坐标
var wh = {w: 100, h: 200} // 宽高
var map = new Map()
// set
map.set(xy, '坐标')
map.set(wh, '宽高')
// get
map.get(xy) // '坐标'
map.get(wh) // '宽高'

위는 객체를 키로 사용하는 맵을 보여줍니다. 다음은 예시입니다

Map 생성자는 배열 전달도 지원합니다

var map = new Map([["name", "John"], ["age", "29"]])
 
// 遍历key
for (var key of map.keys()) {
  console.log(key) // name, age
}

2. 반복

for of를 사용하여 Set처럼 Map을 반복하고 키에 대해 map.keys()를 호출하고 값에 대해 map.values()를 호출하고 키-값 엔터티에 대해 map.entries()를 호출합니다

var map = new Map()
// set
map.set('name', 'John')
map.set('age', 29)
// get
map.get('name') // 'John'
map.get('age') // 29
 
// 遍历key
for (var key of map.keys()) {
  console.log(key)
}
 
// 遍历value
for (var val of map.values()) {
  console.log(val)
}
 
// 遍历实体
for (var arr of map.entries()) {
  console.log('key: ' + arr[0] + ', value: ' + arr[1])
}
 
// 遍历实体的简写
for (var [key, val] of map.entries()) {
  console.log('key: ' + key + ', value: ' + val)
}
 

3. 방법 및 속성

2. 위크맵

지도와의 차이점

기본 유형 값을 키 이름으로 허용하지 않습니다
키, 값, 항목 및 크기가 없습니다
다음과 같은 방법이 있습니다

위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.