1️⃣ 객체지향프로그래밍(OOP)에 대해서 자세하게 설명해주세요.

OOP는 개발 패러다임 중 하나로, 현실 세계의 개념과 객체를 모델링하여 프로그램을 구축하는 방법이다. 각 객체는 객체 고유의 특징이나 성질을 나타내는 "속성=프로퍼티"과 객체의 기능을 나타내는 "메소드"로 구성이 되어있다. 이러한 객체지향프로그래밍의 보다 자세한 특징으로는 아래와 같은 것들이 있다.

  • 캡슐화 : 객체 내부의 상태와 동작은 외부에서 직접 접근하지 않고, 객체의 인터페이스(메서드)를 통해 상호작용합니다. 이로써 객체 내부의 상세 구현을 숨기고 외부에 노출하지 않음으로써 코드의 안정성과 유지보수성을 향상시킵니다.
  • 상속화 : 상속은 이미 존재하는 클래스(부모 클래스 또는 슈퍼 클래스)의 특성과 기능을 다른 클래스(자식 클래스 또는 서브 클래스)가 재사용할 수 있는 개념입니다. 이를 통해 코드 재사용성을 높이고, 계층 구조를 형성하여 객체 간의 관계를 나타낼 수 있습니다.
  • 추상화 : 추상화는 객체에서 중요한 특성과 동작을 간추려 내어 필요한 정보만을 포함하고 불필요한 세부 사항은 숨기는 개념입니다. 추상화를 통해 복잡한 시스템을 단순화하고 핵심 개념을 강조할 수 있습니다.
  • 다형성 : 다형성은 같은 인터페이스를 공유하는 다양한 객체가 다양한 방식으로 동작할 수 있는 능력을 의미합니다. 다형성을 통해 객체의 타입에 따라 다른 메서드가 호출되거나 다른 동작이 실행될 수 있으므로 코드의 유연성을 높이고 확장성을 향상시킵니다.

2️⃣ 프로토타입에 대해서 자세하게 설명해주세요.

자바스크립트에서 프로토타입이란 객체 지향 프로그래밍의 중요한 개념 중 하나이며 이를 기반으로 상속을 구현하여 코드의 불필요한 중복을 제거한다.
추가로 설명하면, 프로토타입은 객체의 부모 역할을 하는 객체로, 다른 객체로부터 상속된 속성과 메서드를 포함하고 있다. 자바스크립트에서 모든 객체는 프로토타입을 가지고 있으며, 각 객체는 자신의 프로토타입을 가리키는 proto라는 내부 속성을 가진다.

3️⃣ proto 프로퍼티와 prototype 프로퍼티의 차이점에 대해서 설명해주세요.

proto와 prototype은 자바스크립트에서 서로 다른 두 가지 프로퍼티로, 서로 다른 목적과 사용 사례를 가지고 있다. proto는 해당 객체의 프로토타입(부모 객체)에 대한 참조를 가리키며, 프로토타입 체인을 통해 상위 프로토타입의 속성과 메서드를 찾을 때 사용된다. 반면 prototype은 함수 객체(function)에서만 사용할 수 있고, 함수로부터 생성된 객체들이 공유하는 프로토타입 객체를 가리킨다. prototype 프로퍼티는 주로 생성자 함수와 함께 사용되고 생성자 함수를 사용하여 객체를 생성하면(인스턴스) 해당 인스턴스는 생성자 함수의 prototype에 정의된 메서드와 속성을 상속한다.

4️⃣ "생성자함수와 프로토타입 단독으로 존재할 수 없고 언제나 쌍으로 존재한다"라는 말이 무슨 뜻인지 설명해주세요.

자바스크립트에서 모든 객체는 상속을 구현하기 위해 "프로토타입"이 필요하다. 이는 객체를 생성하는 역할을 하는 생성자 함수와 이 객체들이 공유하는 프로토타입이 함께 사용되어야 객체를 효율적으로 정의하고 관리할 수 있기 떄문이다. 이것이 가능한 이유는 모든 객체의 프로토타입에는 constructor 라고 하는 프로퍼티가 있어서 각 객체의 생성자 함수에 접근할 수 있기 때문이다. 서로 맞물리는 원형링크드리스트 구조인 것이다.

profile
Whether you're doing well or not, just keep going👨🏻‍💻🔥

0개의 댓글