클래스, 오브젝트, 인스턴스

seungjun.dev·2025년 7월 26일
0

클래스

객체를 만들어내기 위한 설계도 또는 템플릿

  • 연관되어있는 변수와 메소드의 집합
  • 클래스 자체에는 데이터가 들어있지 않음
  • 한 번 선언되면 여러 번 사용할 수 있는 템플릿 역할
class Person {
  constructor(name, age) {
    this.name = name; // field
    this.age = age; // field
  }

  speak() {
    // method
    console.log(`${this.name}: hello!`);
  }
}

객체

소프트웨어 세계에 구현할 대상, 클래스로부터 만들어진 실체

  • 클래스에 선언된 모양 그대로 생성된 실체
  • 상태와 동작을 가짐
  • 클래스의 인스턴스라고도 부름

인스턴스

객체를 실체화한 것, 메모리에 실제로 할당된 구체적인 실체

  • 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체
  • 실체화된 인스턴스는 메모리에 할당
  • 어떤 원본(추상적인 개념)으로부터 생성된 복제본을 의미

객체 vs 인스턴스

거의 같은 의미로 쓰이나 강조하는 관점이 다르다고 한다.

  • Object: 현실 세계에 가깝고, 실체에 초점
  • Instance: 소프트웨어 세계에 가깝고, 관계에 초점

JS에서의 구현

// Class 정의
class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  speak() {
    console.log(`${this.name}: hello!`);
  }
}

// Object/Instance 생성
const ellie = new Person("ellie", 20); // ellie는 Person 클래스의 인스턴스
const steve = new Person("steve", 25); // steve는 Person 클래스의 인스턴스

// 사용
console.log(ellie.name); // 'ellie'
ellie.speak(); // 'ellie: hello!'

차이점 비교

구분ClassObjectInstance
역할설계도/템플릿구현할 대상실체화된 구체적 객체
데이터데이터 없음실제 데이터 포함메모리에 할당된 데이터
생성 횟수한 번 선언여러 번 생성 가능여러 번 생성 가능
메모리메모리 할당 없음개념적 존재실제 메모리 할당
profile
Web FE Dev | Microsoft Student Ambassadors Alumni

0개의 댓글