Skip to content

Commit e464955

Browse files
committed
[심볼형] 리뷰 반영 — 추가 피드백 적용
1 parent 6e52a94 commit e464955

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

1-js/04-object-basics/08-symbol/article.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ alert(id.description); // id
8383

8484
## '숨김' 프로퍼티
8585

86-
심볼을 이용하면 "숨김(hidden)" 프로퍼티를 만들 수 있습니다. 숨김 프로퍼티는 외부 코드에서 접근이 불가능하고 값도 덮어쓸 수 없는 프로퍼티입니다.
86+
심볼을 이용하면 '숨김(hidden)' 프로퍼티를 만들 수 있습니다. 숨김 프로퍼티는 외부 코드에서 접근이 불가능하고 값도 덮어쓸 수 없는 프로퍼티입니다.
8787

8888
서드파티 코드에서 가지고 온 `user`라는 객체가 여러 개 있고, `user`를 이용해 어떤 작업을 해야 하는 상황이라고 가정해 봅시다. `user`에 식별자를 붙여주도록 합시다.
8989

@@ -105,7 +105,7 @@ alert( user[id] ); // 심볼을 키로 사용해 데이터에 접근할 수 있
105105

106106
`user` 객체는 다른 코드베이스에 속해 있으므로, 함부로 새로운 필드(프로퍼티)를 추가하는 것은 안전하지 않습니다. 해당 코드베이스에 미리 정의된 동작에 영향을 줄 수 있기 때문입니다. 하지만 심볼은 우연히 접근하는 것이 불가능합니다. 서드파티 코드는 새롭게 정의된 심볼을 알지 못하므로, `user` 객체에 심볼을 추가하는 것은 안전합니다.
107107

108-
상황 하나를 더 가정해보겠습니다. 제3의 스크립트(자바스크립트 라이브러리 등)에서 `user`를 식별해야 하는 상황이 벌어졌다고 해보죠. `user`의 원천인 서드파티 코드, 현재 작성 중인 스크립트, 제3의 스크립트가 각자 서로의 코드도 모른 채 `user`를 식별해야 하는 상황이 벌어졌습니다.
108+
109109

110110

111111

@@ -173,7 +173,7 @@ for (let key in user) alert(key); // name과 age만 출력되고, 심볼은 출
173173
*/!*
174174

175175
// 심볼로 직접 접근하면 잘 작동합니다.
176-
alert( "직접 접근한 값: " + user[id] );
176+
alert( "직접 접근한 값: " + user[id] ); // 직접 접근한 값: 123
177177
```
178178

179179
[Object.keys(user)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys)에서도 키가 심볼인 프로퍼티는 무시됩니다. 이는 "심볼형 프로퍼티 숨기기(hiding symbolic properties)" 원칙의 일환입니다. 만약 외부 스크립트나 라이브러리가 우리가 만든 객체를 반복문으로 순회하더라도, 심볼형 프로퍼티에 의도치 않게 접근하는 일은 발생하지 않습니다.

0 commit comments

Comments
 (0)