인프런 커뮤니티 질문&답변

ㄱㅈㅎ님의 프로필 이미지
ㄱㅈㅎ

작성한 질문수

자바스크립트 비기너: 튼튼한 기본 만들기

Object vs object

작성

·

416

1

안녕하세요! 강의를 듣다가 이해가 되지 않아서 처음부터 돌려 보고 있는데 대문자/소문자 오브젝트가 계속 잘 이해가 되지 않아 질문드립니다.

 

저는 대문자 오브젝트는 데이터 저장을 위한 프로퍼티 집합이고,

소문자 오브젝트는 데이터 처리를 위한 프로퍼티 집합이라고 이해했습니다.

 

대문자/소문자 오브젝트 모두 구조는 key: value (프로퍼티)로 이루어져 있지만,

데이터 저장을 위한 것 VS 데이터 처리를 위한 것을 구분하기 위해

선생님께서 대문자 VS 소문자 오브젝트를 구분하셨다고 이해했습니다. (제가 이해한 게 맞나요?...)

 

그런데 Number object 파트에서 아래처럼 new 연산자를 설명하실 때,

var obj = new Number();
console.log(typeof obj);

생성된 인스턴스 type을 찍어보면 object로 나오는데, 이 type이 소문자 오브젝트라고 하신 게 이해가 안 됩니다.

소문자 오브젝트를 복사한 개념이니까 소문자 오브젝트라고 하신 걸까요?

console.log(typeof { lang: "JS" });

이것도 type은 똑같이 object가 나오는데, 이건 데이터 저장 목적이 있는 대문자 오브젝트이니까, 대문자 오브젝트 type이다 라고 하면 맞는 설명인가요?

 

감사합니다.

답변 1

0

김영보님의 프로필 이미지
김영보
지식공유자

좋은 질문입니다.

Q) 저는 대문자 오브젝트는 데이터 저장을 위한 프로퍼티 집합이고,  소문자 오브젝트는 데이터 처리를 위한 프로퍼티 집합이라고 이해했습니다.
=> 대문자 Object에 함수를 작성할 수 있으며, 함수는 데이터 처리에 더 가깝습니다.

Q) 데이터 저장을 위한 것 VS 데이터 처리를 위한 것을 구분하기 위해 대문자 VS 소문자 오브젝트를 구분하셨다고 이해했습니다. (제가 이해한 게 맞나요?...)
=> 대문자 Object 안에 함수를 작성할 수 있으므로 처리를 포함할 수 있습니다.

Q) 소문자 오브젝트를 복사한 개념이니까 소문자 오브젝트라고 하신 걸까요?
=> new 연산자로 생성한 인스턴스의 타입을 소문자 object로 표기한 것입니다.

Q) 대문자 오브젝트 type이다 라고 하면 맞는 설명인가요?
=> typeof 연산자의 오류(typeof null도 object)이기도 합니다만, 포괄적으로 object로 표현합니다.

--------
강좌에서 대문자 Object는 Object 이름이 Object인 것을 뜻하며, 소문자 object는 new 연산자로 생성한 인스턴스를 뜻합니다. 비기너 과정에서는 구분을 위한 것도 있지만, 몇 단계 깊게 들어가면 차이가 있습니다.

지금 정리가 되지 않아도 괜찮습니다.
이 점을 염두에 두고 진도를 나가면 점진적으로 뉘앙스를 이해하게 될 것으로 생각합니다.

ㄱㅈㅎ님의 프로필 이미지
ㄱㅈㅎ
질문자

감사합니다 그런데 date type 에서 object를 설명하실 때는 대문자라고 말씀하시고, built-in object를 설명하실 때는 소문자라고 말씀해 주셨는데 답변해 주신 내용으로는 이것이 아직 잘 이해가 안됩니다 ㅠㅠ

일단은 진도를 더 나가봐도 괜찮을까요

김영보님의 프로필 이미지
김영보
지식공유자

진도를 나가도 괜찮습니다. 자바스크립트를 전반적으로 이해하게 되면 차이를 알게 됩니다.

ㄱㅈㅎ님의 프로필 이미지
ㄱㅈㅎ

작성한 질문수

질문하기