객체지향 프로그래밍(OOP)

seung weon, seo·2024년 9월 10일
post-thumbnail

객체 지향 프로그래밍이란?

객체 지향 프로그래밍(OOP, Object-Oriented Programming)은 객체를 사용하여 데이터를 구조화하고 이를 처리하는 프로그래밍 패러다임입니다.

객체 지향 프로그래밍의 주요 개념

객체 (Object)

객체는 속성과 메서드의 집합으로, 속성은 객체의 상태를 나타내는 변수이고, 메서드는 객체의 동작을 정의하는 함수입니다.

클래스 (Class)

클래스는 객체를 생성하기 위한 청사진(템플릿)으로 ES6(ECMAScript 2015)에서 도입되었습니다.

상속 (Inheritance)

상속은 기존 클래스의 기능을 재사용하여 새로운 클래스를 만드는 방법으로 extends 키워드를 사용하여 구현할 수 있습니다.

super 란?

super는 상속 관계에서 부모 클래스의 constructor(생성자)와 메서드를 호출하는 데 사용됩니다. 자식 클래스의 생성자에서 super를 호출하기 전에는 this를 사용할 수 없습니다.
(매우 중요)

다형성 (Polymorphism)

다형성은 같은 메서드가 다른 객체에서 다르게 동작할 수 있도록 하는 능력입니다. 예를 들어, greet 메서드는 Person 클래스와 Employee 클래스에서 각각 다르게 동작할 수 있습니다.

this 란?

this는 함수가 호출되는 방식에 따라 다르게 정의되며, 객체 내에서 현재 객체를 참조하는 데 사용됩니다. this는 객체 지향 프로그래밍(OOP)에서 중요한 역할을 하며, 상황에 따라 다른 값을 가질 수 있습니다.

전역 컨텍스트 (Global Context)

전역 컨텍스트에서 this는 전역 객체를 가리킵니다. 브라우저 환경에서는 전역 객체가 window이고, Node.js에서는 global입니다.

메서드 호출 (Method Call)

객체의 메서드 내부에서 this는 해당 메서드를 소유한 객체를 가리킵니다.

생성자 함수(Constructor Function)

생성자 함수 내부에서 this는 새로 생성된 인스턴스 객체를 가리킵니다.

명시적 바인딩(Explicit Binding)

call, apply, bind 메서드를 사용하여 this를 명시적으로 설정할 수 있습니다.

화살표 함수(Arrow Function)

화살표 함수는 자신만의 this 바인딩을 가지지 않고, 주변 컨텍스트의 this를 사용합니다. (중요)

this 사용 시 주의사항

함수 호출 방식에 따른 this

함수가 호출되는 방식에 따라 this의 값이 달라질 수 있습니다. 예를 들어, 객체의 메서드로 호출될 때 (메서드를 호출한 객체 참조)와 일반 함수로 호출될 때 (전역 객체를 참조) this다르게 바인딩됩니다.

콜백 함수 내의 this

콜백 함수 내에서 this는 일반적으로 기대하는 객체를 참조하지 않을 수 있습니다. 이 경우 화살표 함수bind() 메서드를 사용하여 this를 바인딩할 수 있습니다.

엄격 모드 (use strict)

엄격 모드에서는 thisundefined로 바인딩될 수 있으므로 주의해야 합니다.

profile
to reach new possibilities

0개의 댓글