728x90
반응형
클래스 vs 객체
1️⃣ 한 줄로 차이 요약
클래스 = 설계도
객체 = 그 설계도로 만든 실제 물건
2️⃣ 현실 비유 (가장 이해 잘 됨)
🏠 집으로 비유하면
- 클래스 = 집 설계도
- 객체 = 실제로 지어진 집
설계도만 있다고 사람이 살 수는 없죠?
👉 실제로 지어진 집(객체)이 있어야 사용 가능
🚗 자동차 비유
- 클래스 = 자동차 모델 설명서
- 객체 = 내 차, 네 차, 옆집 차
자동차 클래스
↓
객체1: 내 차
객체2: 택시
객체3: 렌터카
3️⃣ 코드로 보면 (JavaScript)
클래스
class Car {
constructor(color) {
this.color = color;
}
drive() {
console.log("달린다");
}
}
👉 이건 아직 아무 차도 없음
👉 그냥 “차는 이런 속성/기능을 가진다”는 정의
객체 (인스턴스)
const myCar = new Car("red");
= { color: "red"; drive: () => { console.log("달린다") }
// myCar.color = "red"
// myCar.drive = "달린다"
const taxi = new Car("yellow");
= { color: "yellow"; drive: () => {conosle.log("달린다") }
// myCar.color = "yellow"
// myCar.drive = "달린다"
- myCar, taxi → 객체
- new Car() → 설계도로 실물 생성
4️⃣ 클래스 vs 객체 정확한 차이
| 구분 | 클래스 | 객체 |
| 정체 | 설계도 | 실물 |
| 메모리 | 없음 | 있음 |
| 여러 개 가능? | 1개 정의 | 여러 개 생성 |
| 상태 가짐? | ❌ | ✅ (값 보유) |
| new 사용 | ❌ | ✅ |
5️⃣ 객체는 “상태”를 가진다
myCar.color = "red";
taxi.color = "yellow";
- 같은 클래스
- 서로 다른 상태
👉 이게 객체의 핵심
6️⃣ 객체 = 클래스의 복사본?
❌ 정확히는 아님
- 클래스는 틀
- 객체는 그 틀로 만든 독립적인 존재
객체끼리는 서로 영향 안 줌
7️⃣ 함수랑 비교하면 더 명확해짐
function add(a, b) {
return a + b;
}
add(1, 2);
// 3
- 함수 정의 → 클래스 느낌
- add(1, 2) 실행 결과 → 객체 같은 “실체”
(완전히 같진 않지만 감 잡기엔 좋음)
8️⃣ 초보자가 가장 헷갈리는 포인트
❓ “클래스 = 객체 아니야?”
👉 JS에서는 맞는 말 (고급 개념)
class Car {
constructor(color) {
this.color = color;
}
drive() {
console.log("달린다");
}
}
typeof Car
// "function"
- JS에선 클래스도 사실 함수 객체
- 하지만 개념적으로는 구분해서 생각해야 이해 쉬움
9️⃣ 진짜 핵심만 남기면
클래스는 정의,
객체는 정의된 것을 실제로 쓰는 것
다음으로 보통 바로 궁금해지는 게 👇
- 인스턴스랑 객체 차이
- 프로토타입이랑 클래스 관계
- JS에서 클래스가 사실상 함수인 이유
원하면 그 중에서 하나 바로 이어서 설명해줄게.
객체 vs 인스턴스
“거의 같은 말인데, 쓰는 관점이 다르다” 가 정답이에요.
1️⃣ 한 줄 요약
인스턴스 = ‘클래스로부터 만들어졌다는 관계’를 강조한 말이고,
객체 = ‘메모리에 존재하는 실제 대상’을 말한다.
2️⃣ 가장 정확한 비유
🍞 빵 비유
- 클래스 = 붕어빵 틀
- 객체 = 만들어진 붕어빵
- 인스턴스 = “이 붕어빵은 저 틀로 찍어낸 거야”
👉 인스턴스는 항상 “~의”가 붙음
- Car의 인스턴스
- User의 인스턴스
👉 객체는 그냥
- “이건 객체야”
3️⃣ 코드로 보면
class User { // 클래스 (설계도)
constructor(name) {
this.name = name;
}
}
const u1 = new User("철수");
// 객체 (설계도로 만든 '실물')
// User 클래스의 인스턴스 ('설계도로 만든' 거야)
✔ 객체
✔ User 클래스의 인스턴스
둘 다 맞는 표현
4️⃣ 언제 구분해서 쓰냐?
✔ “인스턴스”를 쓰는 상황
- 클래스와의 관계를 말할 때
- 객체 생성 맥락 설명할 때
User 클래스로부터 인스턴스를 생성했다
✔ “객체”를 쓰는 상황
- 메모리에 존재하는 실체를 말할 때
- 클래스와 무관하게도 쓰임
const obj = { a: 1 };
👉 이것도 객체지만
👉 어떤 클래스의 인스턴스라고 부르진 않음 (보통)
5️⃣ 중요한 차이 포인트
| 구분 | 객체 | 인스턴스 |
| 의미 | 메모리에 있는 대상 | 특정 클래스와의 관계 강조 |
| 클래스 필요 | ❌ 없어도 됨 | ✅ 반드시 필요 |
| 표현 | “객체다” | “~의 인스턴스다” |
6️⃣ 그래서 이 문장, 맞아?
“모든 인스턴스는 객체다”
✅ 맞음
“모든 객체는 인스턴스다”
❌ 아님
(JS 객체 리터럴, 함수 객체 등)
7️⃣ JS에서 헷갈리는 포인트 하나
const fn = function() {};
- fn → 객체
- ❌ “
Function 클래스의 인스턴스”라고는 잘 안 말함
(개념 설명할 때만 가끔)
8️⃣ 핵심 문장 하나로 끝내면
객체는 결과물,
인스턴스는 출신을 강조한 말
이제 다음 단계로 딱 이어지는 게 👇
- 프로토타입이 왜 필요한지
- new가 실제로 하는 일
- JS에 클래스가 ‘없는 것처럼’ 보이는 이유
어디까지 갈지 말해줘 😄
728x90
반응형
'프로그래밍' 카테고리의 다른 글
| com.twitter.HTTPRequestActionResponseError 오류 131 (0) | 2026.01.14 |
|---|---|
| II (OR 연산자) vs ?? (Null 병합 연산자) (0) | 2026.01.09 |
| const { serverTime } = window / window.__SERVERTIME__ = 1730000000000 (0) | 2026.01.09 |
| Date.now() / 1730000000000 / 1970-01-01 00:00:00 (UTC)의 관계 (0) | 2026.01.08 |
| clearInterval(tt) (0) | 2026.01.06 |
| querySelectorAll() 에서 query란? (0) | 2026.01.06 |
| async / Promise / await (0) | 2026.01.06 |
| 서버 구현 :: node.js + Express (0) | 2025.11.04 |