inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바스크립트 중급 강좌

심볼(Symbol)

심볼 관련 질문

279

춘식이

작성한 질문수 6

0

안녕하세요.자바스크립트 중급강의 듣다가 질문 드립니다.영상 5:56 부분에서 심볼을 사용하면 user객체에 해당 메소드가 있었는지 고민할 필요가 없다고 말씀해주셨는데요.그 이유가 궁금합니다.다른 개발자가 만들어놓은 프로퍼티를 덮어쓸 위험이 없는 것과는 다른 이유가 또 있을 것 같아서요.답변 부탁드릴게요.

javascript

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

qoswfxin님, 자바스크립트 중급 강의를 수강하시면서 심볼(Symbol)에 관한 궁금증을 가지셨군요.
심볼을 사용하는 주된 이유 중 하나는 말씀하신 것처럼 다른 개발자가 만들어놓은 프로퍼티를 덮어쓰는 것을 방지하기 위함입니다. 심볼은 고유하고 수정 불가능한 데이터 타입으로, 객체의 고유한 식별자로 사용할 수 있습니다. 이 특성 덕분에 심볼을 프로퍼티 키로 사용하면 라이브러리나 다른 코드에서 우연히 같은 이름의 프로퍼티 키를 사용했을 때 발생할 수 있는 충돌을 피할 수 있습니다.

추가로 심볼을 사용하는 이유는 다음과 같습니다:
- 객체의 속성을 비공개로 만들 수 있어, 객체의 일부 속성을 숨기고 싶을 때 유용합니다. 심볼로 만든 프로퍼티는 for…in 루프나 Object.keys() 같은 메서드로 접근할 수 없습니다.
- Well-Known 심볼을 사용하면 기본 언어 작업을 사용자 정의할 수 있어, 내장된 메서드의 동작을 변경하고자 할 때 활용할 수 있습니다. 예를 들어 Symbol.iterator를 활용하여 객체의 기본 반복자를 정의할 수 있습니다.

심볼을 통해 이런 유연성과 안정성을 동시에 확보할 수 있으므로, 코드의 확장성과 유지보수성 측면에서 여러 장점을 제공합니다.

질문에 대한 충분한 답변이 되었길 바라며, 강의 수강 중 더 궁금한 사항이 생기신다면 언제든지 문의해주세요.

css box-sizing 관련 질문

0

8

1

스니펫이 이상해요

0

10

2

Editor Component의 최적화 불가능 이슈

0

17

2

useCallback ⊂ useMemo

0

21

2

깃허브 저장소를 어디에 첨부하셨나요?

1

28

1

nestjs 강의는 없나요??

1

25

2

스타터 저장소

1

31

1

What is Rxjs

0

21

1

라이브러리 설치 질문

0

26

2

linter 질문

0

32

2

수업자료 링크 접속했는데 404에러 뜹니다 ㅠ

1

34

1

primitive에 onClick 이벤트가 안되는 경우

0

26

2

감정일기장 vercel 배포 후 새로 고침 시 404페이지가 뜨는 이유

0

37

2

자료실

1

36

2

Sort 메서드 관련 아티클

0

41

2

4.1) React.js를 소개합니다 강의를 듣고 궁금한 점이 생겼습니다.

0

41

2

html, body에 적용하는 css 스타일 질문입니다.

0

38

2

html / css 기초는 있습니다..

0

50

2

모든 컴포넌트를 클라이언트 컴포넌트로 했을 때

0

30

3

ReactScriptExample 관련 질문

0

38

1

소스코드즘 부탁드립니다.

0

42

1

안녕하세요 한번 더 문의드립니다.

0

61

4

async에서 catch 질문 있습니다.

0

567

2

마지막 부분에 질문 있습니다.

1

316

1