- 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 원리를 그대로 따른다.