자바스크립트 deep dive 책을 읽으면서 자바스크립트란 전부 객체다 라는 말을 보고 한번 정리할 필요가 있을거 같아서 적어본다.
이 말은 단순히 멋있는 철학처럼 들릴 수도 있지만, 실제로 자바스크립트의 동작 방식을 이해하면 진짜 이 말이 무슨 뜻인지 깨닫게 된다.
그럼, 어떤 의미인지 살펴보자.
원시 타입도 객체처럼 동작한다
자바스크립트에서 기본 데이터 타입인 원시 타입(Primitive Type)은 다음과 같다:
- String (문자열)
- Number (숫자)
- Boolean (참/거짓)
- BigInt (큰 정수)
- Symbol (유일한 값)
- undefined
- null
이 데이터 타입들은 원래 값(primitive)으로 동작하지만, 필요할 때는 객체처럼 행동할 수 있다.
왜냐하면 자바스크립트는 원시 타입에 객체의 메서드와 프로퍼티를 사용하려 하면, 자동으로 객체로 감싸주는 과정(Boxing)을 거치기 때문이다.
예시)
//문자열
const str = "hello";
// 문자열을 대문자로 변환
console.log(str.toUpperCase()); // "HELLO"
// 문자열 길이 확인
console.log(str.length); // 5
//숫자
const num = 123.456;
// 소수점 이하 자리수를 고정
console.log(num.toFixed(2)); // "123.46"
// 숫자를 문자열로 변환
console.log(num.toString()); // "123.456"
- 원시 타입은 값으로 동작하지만, 필요할 때는 객체처럼 동작한다.
- 자바스크립트에서 원시 타입을 제외한 나머지 모든 것은 객체다.
- undefined와 null은 객체처럼 변환되지 않음.
비유로 이해해보자!
- 메서드는 너가 스트링에게 일을 시키는 것예: "얘야, 전부 대문자로 바꿔봐!" → toUpperCase()
- 프로퍼티는 스트링한테 "이미 가지고 있는 정보"를 물어보는 것.예: "너 몇 글자니?" → length
반응형
'JavaScript' 카테고리의 다른 글
JavaScript - 리스트 매핑시 여러가지 방법 (0) | 2024.12.11 |
---|---|
JavaScript - About 비동기, AJAX란? (3) | 2024.12.10 |
JavaScript - 타입스크립트란 무엇일까? (심화편) (0) | 2024.09.28 |
JavaScript - 타입스크립트란 무엇일까? (기본편) (4) | 2024.09.28 |
JavaScript - 디자인 패턴 (9) | 2024.09.22 |