JavaScript

JavaScript - 자바스크립트란 전부 객체다

인어공쭈 2024. 11. 25. 16:15

자바스크립트 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"

 

 

  1. 원시 타입은 값으로 동작하지만, 필요할 때는 객체처럼 동작한다.
  2. 자바스크립트에서 원시 타입을 제외한 나머지 모든 것은 객체다.
  3. undefinednull은 객체처럼 변환되지 않음.

 

비유로 이해해보자!

  • 메서드는 너가 스트링에게 일을 시키는 것예: "얘야, 전부 대문자로 바꿔봐!" → toUpperCase()
  • 프로퍼티는 스트링한테 "이미 가지고 있는 정보"를 물어보는 것.예: "너 몇 글자니?" → length

 

반응형