You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
첫 번째 차이는 `obj.keys()`가 아닌 `Object.keys(obj)`를 호출한다는 점입니다.
34
34
35
-
이렇게 문법에 차이가 있는 이유는 유연성 때문입니다. 아시다시피 자바스크립트에선 복잡한 자료구조 전체가 객체에 기반합니다. 그러다 보니 객체 `data`에 자체적으로 메서드 `data.values()`를 구현해 사용하는 경우가 있을 수 있습니다. 이렇게 커스텀 메서드를 구현한 상태라도 `Object.values(data)`같이 다른 형태로 메서드를 호출할 수 있으면 커스텀 메서드와 내장 메서드 둘 다를 사용할 수 있습니다.
35
+
이렇게 문법이 다른 이유는 유연성 때문입니다. 아시다시피 자바스크립트에선 복잡한 자료구조 전체가 객체에 기반합니다. 그러다 보니 객체 `data`에 자체적으로 `data.values()`라는 메서드를 구현해 사용하는 경우가 있을 수 있습니다. 이렇게 커스텀 메서드를 구현한 상태라도 `Object.values(data)`같은 형태로 메서드를 호출할 수 있으면 커스텀 메서드와 내장 메서드 둘 다를 사용할 수 있습니다.
36
36
37
37
두 번째 차이는 메서드 `Object.*`를 호출하면 iterable 객체가 아닌 객체의 한 종류인 배열을 반환한다는 점입니다. '진짜' 배열을 반환하는 이유는 하위 호환성 때문입니다.
`for..in` 반복문처럼, Object.keys, Object.values, Object.entries는 키가 심볼형인 프로퍼티를 무시합니다.
68
68
69
-
대개는 심볼형 키를 연산 대상에 포함하지 않는 게 좋지만, 심볼형 키가 필요한 경우엔 심볼형 키만 배열 형태로 반환해주는 메서드, [Object.getOwnPropertySymbols](mdn:js/Object/getOwnPropertySymbols)를 사용하면 됩니다. `getOwnPropertySymbols` 이외에도 *모든* 키를 배열 형태로 반환하는 메서드, [Reflect.ownKeys(obj)](mdn:js/Reflect/ownKeys)를 사용할 수 있습니다.
69
+
대개는 심볼형 키를 연산 대상에 포함하지 않는 게 좋지만, 심볼형 키가 필요한 경우엔 심볼형 키만 배열 형태로 반환해주는 메서드인 [Object.getOwnPropertySymbols](mdn:js/Object/getOwnPropertySymbols)를 사용하면 됩니다. `getOwnPropertySymbols` 이외에도 키 *전체*를 배열 형태로 반환하는 메서드인 [Reflect.ownKeys(obj)](mdn:js/Reflect/ownKeys)를 사용해도 괜찮습니다.
70
70
```
71
71
72
72
@@ -76,11 +76,11 @@ for (let value of Object.values(user)) {
76
76
77
77
하지만 `Object.entries`와 `Object.fromEntries`를 순차적으로 적용하면 객체에도 배열 전용 메서드 사용할 수 있습니다. 적용 방법은 다음과 같습니다.
78
78
79
-
1.`Object.entries(obj)`를 사용해 객체의 키-값 쌍을 요소로 갖는 배열을 얻습니다.
79
+
1.`Object.entries(obj)`를 사용해 객체의 키-값 쌍이 요소인 배열을 얻습니다.
80
80
2. 1.에서 만든 배열에 `map` 등의 배열 전용 메서드를 적용합니다.
81
81
3. 2.에서 반환된 배열에 `Object.fromEntries(array)`를 적용해 배열을 다시 객체로 되돌립니다.
82
82
83
-
위 방법을 사용해 가격 정보가 저장된 객체 prices의 프로퍼티 값을 두 배로 늘려보도록 합시다.
83
+
이 방법을 사용해 가격 정보가 저장된 객체 prices의 프로퍼티 값을 두 배로 늘려보도록 합시다.
84
84
85
85
```js run
86
86
let prices = {
@@ -99,4 +99,4 @@ let doublePrices = Object.fromEntries(
99
99
alert(doublePrices.meat); // 8
100
100
```
101
101
102
-
지금 당장은 어렵게 느껴지겠지만 한두 번 위와 같은 방법을 적용해 보면 객체에 배열 전용 메서드를 손쉽게 적용할 수 있을 겁니다.
102
+
지금 당장은 어렵게 느껴지겠지만 한두 번 위 방법을 적용해 보면 객체에 배열 전용 메서드를 적용하는게 쉬워질 겁니다.
0 commit comments