|
3 | 3 |
|
4 | 4 | 아시다시피 객체엔 프로퍼티가 저장됩니다. |
5 | 5 |
|
6 | | -지금까진 프로퍼티를 단순히 "키-값" 쌍의 관점에서만 다뤘습니다. 그런데 사실 프로퍼티는 우리가 생각했던 것보다 더 유연하고 강력한 자료구조입니다. |
| 6 | +지금까진 프로퍼티를 단순히 '키-값' 쌍의 관점에서만 다뤘습니다. 그런데 사실 프로퍼티는 우리가 생각했던 것보다 더 유연하고 강력한 자료구조입니다. |
7 | 7 |
|
8 | | -이 챕터에선 객체 프로퍼티 추가 구성 옵션 몇 가지를 다룰것 입니다. 이어지는 챕터에선 이 옵션들을 이용해 손쉽게 getter나 setter 함수를 만드는 법을 알아보겠습니다. |
| 8 | +이 챕터에선 객체 프로퍼티 추가 구성 옵션 몇 가지를 다루고, 이어지는 챕터에선 이 옵션들을 이용해 손쉽게 getter나 setter 함수를 만드는 법을 알아보겠습니다. |
9 | 9 |
|
10 | 10 | ## 프로퍼티 플래그 |
11 | 11 |
|
|
15 | 15 | - **`enumerable`** -- `true`이면 반복문을 사용해 나열할 수 있습니다. 그렇지 않다면 반복문을 사용해 나열할 수 없습니다. |
16 | 16 | - **`configurable`** -- `true`이면 프로퍼티 삭제나 플래그 수정이 가능합니다. 그렇지 않다면 프로퍼티 삭제와 플래그 수정이 불가능합니다. |
17 | 17 |
|
18 | | -프로퍼티 플래그는 특별한 경우가 아니고선 다룰 일이 없기 때문에 여기서 처음 소개하게 되었습니다. 지금까지 해왔던 "평범한 방식"으로 프로퍼티를 만들면 해당 프로퍼티의 플래그는 모두 `true`가 됩니다. 이렇게 `true`로 설정된 플래그는 언제든 수정할 수 있습니다. |
| 18 | +프로퍼티 플래그는 특별한 경우가 아니고선 다룰 일이 없기 때문에 여기서 처음 소개하게 되었습니다. 지금까지 해왔던 '평범한 방식'으로 프로퍼티를 만들면 해당 프로퍼티의 플래그는 모두 `true`가 됩니다. 이렇게 `true`로 설정된 플래그는 언제든 수정할 수 있습니다. |
19 | 19 |
|
20 | 20 | 자 이제 본격적으로 프로퍼티 플래그에 대해 다뤄봅시다. 먼저 플래그를 얻는 방법을 알아보겠습니다. |
21 | 21 |
|
@@ -66,7 +66,7 @@ Object.defineProperty(obj, propertyName, descriptor) |
66 | 66 | : 설명자를 적용하고 싶은 객체와 객체 프로퍼티 |
67 | 67 |
|
68 | 68 | `descriptor` |
69 | | -: 적용하고자하는 프로퍼티 설명자 |
| 69 | +: 적용하고자 하는 프로퍼티 설명자 |
70 | 70 |
|
71 | 71 | `defineProperty`메서드는 객체에 해당 프로퍼티가 있으면 플래그를 원하는 대로 변경해줍니다. 프로퍼티가 없으면 인수로 넘겨받은 정보를 이용해 새로운 프로퍼티를 만듭니다. 이때 플래그 정보가 없으면 플래그 값은 자동으로 `false`가 됩니다. |
72 | 72 |
|
@@ -96,7 +96,7 @@ alert( JSON.stringify(descriptor, null, 2 ) ); |
96 | 96 | */ |
97 | 97 | ``` |
98 | 98 |
|
99 | | -"평범한 방식으로" 객체 프로퍼티 `user.name`을 만들었을 때와 `defineProperty`를 이용해 프로퍼티를 만들었을 때의 가장 큰 차이점은 플래그에 있습니다. `defineProperty`를 사용해 프로퍼티를 만든 경우, `descriptor`에 플래그 값을 명시하지 않으면 플래그 값이 자동으로 `false`가 됩니다. 플래그 값을 `true`로 설정하려면 `descriptor`에 `true`라고 명시해 주어야 합니다. 이제 예시를 통해 플래그의 효과에 대해 알아봅시다. |
| 99 | +'평범한 방식으로' 객체 프로퍼티 `user.name`을 만들었을 때와 `defineProperty`를 이용해 프로퍼티를 만들었을 때의 가장 큰 차이점은 플래그에 있습니다. `defineProperty`를 사용해 프로퍼티를 만든 경우, `descriptor`에 플래그 값을 명시하지 않으면 플래그 값이 자동으로 `false`가 됩니다. 플래그 값을 `true`로 설정하려면 `descriptor`에 `true`라고 명시해 주어야 합니다. 이제 예시를 통해 플래그의 효과에 대해 알아봅시다. |
100 | 100 |
|
101 | 101 | ## writable 플래그 |
102 | 102 |
|
@@ -249,7 +249,7 @@ Object.defineProperty(user, "name", {writable: true}); // Error |
249 | 249 | ```smart header="\"non-configurable\"은 \"non-writable\"과 다릅니다." |
250 | 250 | `configurable` 플래그가 `false`이더라도 `writable` 플래그가 `true`이면 프로퍼티 값을 변경할 수 있습니다. |
251 | 251 |
|
252 | | -`configurable: false`는 플래그 값 변경이나 프로퍼티 삭제를 막기 위해 만들어졌지, 프로퍼티 값 변경을 막기 위해 만들어 진 게 아닙니다. |
| 252 | +`configurable: false`는 플래그 값 변경이나 프로퍼티 삭제를 막기 위해 만들어졌지, 프로퍼티 값 변경을 막기 위해 만들어진 게 아닙니다. |
253 | 253 | ``` |
254 | 254 |
|
255 | 255 | ## Object.defineProperties |
|
0 commit comments