Oop

  • Published on
    생성자 함수는 new 키워드와 함께 호출되어 새로운 객체를 만드는 함수다. new가 실행되면 먼저 빈 객체가 생성되고, 그 객체의 [[Prototype]]이 생성자 함수의 prototype 속성과 연결된다. 이후 함수 내부의 this는 그 새 객체를 가리키며, 프로퍼티가 초기화된다. 마지막으로 함수가 자동으로 그 객체를 반환하면서 인스턴스가 완성된다. 이렇게 생성자 함수와 new 키워드를 통해 만들어진 객체는 생성자 함수의 프로토타입을 부모로 삼아 메서드와 속성을 공유하며, 프로토타입 체인을 따라 상속 구조를 형성한다.
  • Published on
    전통적인 OOP는 Java, C++, Python 등 클래스 기반 언어에서, 설계도(Class)로부터 속성과 메서드가 복사(copy) 되어 인스턴스가 만들어지는 방식이다. 반면, JavaScript OOP는 프로토타입(prototype) 기반으로, 객체가 다른 객체(프로토타입)에 연결(link) 되어 속성과 메서드를 위임(delegate) 받아 사용하는 구조다. 즉, JS의 상속은 복사가 아닌 “위임(Delegation)”이며, class 문법 역시 기존 prototype 시스템을 보기 좋게 표현한 문법적 설탕에 불과하다. 결국 JS의 모든 OOP 방식(생성자 함수, ES6 class, Object.create)은 프로토타입 상속(prototypal inheritance) 위에서 동작하며, 추상화·캡슐화·상속·다형성의 OOP 원리를 그대로 따른다.
  • Published on
    OOP는 코드를 객체 중심으로 구조화해 복잡한 로직을 효율적으로 관리하는 프로그래밍 패러다임이다. 객체는 데이터(속성)와 메서드를 하나의 블록으로 묶어 서로 상호작용하며, 이를 통해 유지보수성과 재사용성을 높인다. OOP의 4대 핵심 원리는 추상화(Abstraction), 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism) 으로, 불필요한 세부사항을 숨기고, 데이터 보호 및 코드 재사용을 가능하게 한다.