boostcamp

Day06 학습 정리

daykim 2023. 7. 18. 00:18

클래스

프로그래밍상 정의되어 있는 데이터와 메소드의 집합으로, 객체를 생성하기 위한 설계도다.

인스턴스

클래스로부터 생성된 객체를 해당 클래스의 인스턴스라고 한다.

  • 위의 반환받은 값을 저장한 것을 인스턴스라고 한다.

객체

물리적으로 존재하는 개념으로, 다른것과 식별이 가능한 것이다.

  • 클래스, 인스턴스를 합해서 객체라고 한다.

 

다형성

  • 정리해둔게 있는데 예제랑 잘 되어있다.
  • 다형성

 

상속

  • 객체가 다른 객체를 상속받아, 상속받은 객체의 요소를 사용하는 것이다.
  • 이 때, 상속된 객체를 부모, 상속 받은 객체를 자식이라고 한다.
  • 부모 객체가 추상 객체일 경우, 추상 메소드오버라이딩을 통해 부모 객체의 메소드를 구현하거나 다룰 수 있다.

 

super

  • JS에서 자식 클래스가 부모 클래스의 생성자와 메소드를 사용할 때, 사용해야 하는 키워드다.
constructor(name, age) {
	super(name, age)
}

super.getName();

 

this

  • 현재 실행중인 코드에서 사용되는 객체를 참조하는데, 실행 컨텍스트에 따라 동적으로 결정된다.
  • 즉, 어떤 객체에서 호출되는지에 따라 가리키는 값이 달라진다.

 

+++

클래스 내부에서 부모의 메서드에 접근할 때 super 키워드를 사용한다.
그런데, this 키워드를 사용해도 동작하는 경우가 있다.
this -> 부모 메서드를 오버라이딩 한 것이 있으면 그 함수를 호출하고, 없으면 부모걸 자동으로 호출하는 듯하다.

 

추상화 (Abstraction)

  • 단순화되거나 대표성을 띄는 것
  • 추상화 매커니즘
  • 1. 프로시저 추상화 (procedure abstraction) : 무엇을 해야하는지, 절차에 대한 추상화
    • 절차지향- 구조적 프로그래밍 패러다임
  • 2. 데이터 추상화 (data abstraction) : 무엇을 알야하는지 추상
    • 타입을 추상화
    • 데이터 중심 프로시저 추상화

 

간접 참조

  • 직접적으로 가지고 있는 것이 아니라, 우회해서(포인터, alias 형태로) 참조하는 방식이다.

 

JS에서 객체 표현 방법


1. class 없이 object로 표현하는 방법

const chinjjang = {
    name: "신짱구",
    age: 5
}

 

2. class로 표현하는 방법

class Chinjjang {
    constructor(name, age) {
    	this.name = name;
        this.age = age;
    }
    
    showData() {
        consol.log("이름 :" + this.name);
        consol.log("나이 :" + this.age);
    }
}

 

3. function을 new 키워드로 호출해 그 함수를 cosntructor로 만들는 방법

const chinjjang = function(name, age) {
	....
}

const jg = new Chinjjang("짱구", age);

 

4. prototype

  • 메서드를 prototype 객체에 보관해서, constructor() 보다는 메모리 효율성에서 매우 유리하다.
  •  

 

Prototype 객체

  • 자바스크립트의 프로토타입 객체(Prototype Object)는 모든 객체가 공유하는 특별한 객체다.
  • 모든 객체는 해당 객체의 프로토타입을 가지고, 프로토타입을 통해 상속과 메서드를 공유한다.
  • 함수로 생성된 객체에서 사용되고, 해당 생성자 함수의 prototype 속성에 저장된다.

 

class와 prototype 비교

Class Prototype
- 클래스는 객체를 생성하는 설계도다.

- 해당 객체의 속성과 메서드에 대한 참조를 가진 다른 객체다.
- 자바스크립트의 고유한 상속 매커니즘으로, 객체 간에 프로토타입 체인을 형성해 상속을 구현한다.
- 객체를 생성할 때, 프로토타입을 기반으로 상속되는 프로토타입 체인을 형성한다.
- 객체 생성과 상속이 간편하고, 가독성이 높아진다.

- 생성자를 사용하면, 객체 생성할 때마다 객체  내부에 해당 생성자 함수로 정의된 메서드와 속성이 복제된다. -> 객체 수에 따라 메모리 사용량이 증가한다.
- 더욱 유연한 객체 생성과 상속을 구현할 수 있다.

- prototype 속성에 저장되며, 모든 객체는 프로토타입을 공유하기 때문에 한 번만 생성된다.

 

JS에서 객체 비교 방법


1. ===

2. ==

3. Object.is()

 

 

참고자료

'boostcamp' 카테고리의 다른 글

Day08 학습 정리  (0) 2023.07.19
Day07 학습정리  (0) 2023.07.18
Day04 학습 정리  (0) 2023.07.13
Day03 학습정리  (0) 2023.07.12
Day02 학습 정리  (0) 2023.07.11