-
객체 지향 프로그래밍(1) - 자바스크립트에서 object 생성 방법JavaScript 2020. 6. 17. 18:07
OOP(Object Oriented Programming) / 객체 지향 프로그래밍
1) 객체를 기반으로 하는 프로그래밍 패러다임.
2) 하나의 모델이 되는 청사진(class)을 만들고, 그 청사진을 바탕으로한 객체(instance)를 만드는 프로그래밍 패턴.
* 객체(Object) : 서로 연관된 변수와 함수를 그룹핑한 것, 객체 내의 변수를 property, 함수를 method라고 한다.
3) 객체 지향 프로그래밍의 4가지 특징
- 캡슐화(encapsulation) : 변수와 함수를 하나의 함수로 묶는 것을 말한다. 사용자에게는 사용법만 알려주고 내부가 어떻게 되있는지는 숨길 수 있다. 이런 컨셉을 정보의 은닉화 또는 캡슐화라고 부른다.
- 상속(inheritance) : 자식(sub) 클래스가 부모(super) 클래스의 기능을 받아서 쓰는 것. 어떤 객체의 필드(변수)와 메소드를 다른 객체가 물려 받을 수 있는 기능을 말한다.
- 추상화(abstraction) : 공통의 속성이나 기능을 묶어 이름을 붙이는 것으로, 불필요한 정보는 생략하고 객체의 속성 중 중요한 것에만 중점을 두어 간단한 구조, 즉 클래스를 만드는 일련의 과정을 말한다.
- 다형성(polymorphism) : 부모 클래스로부터 상속을 받아 똑같은 기능이지만 다른 내용을 추가함으로써 차별점을 둘 수 있는 특성.
JavaScript에서 Object를 생성하는 방법
1. 객체 리터럴 방식
: 중괄호 {} 안에 property : value 쌍을 입력하고 쉼표(,)로 다른 property : value 쌍과 구분한다.
let book1 = { title: 'little Woman', author: 'L.M.ALCOTT', price: 16500 }
2. 생성자 함수 방식
: '생성자'는 객체를 만드는 역할을 하는 함수다. 함수를 호출할 때 new를 붙이면 새로운 객체를 만든 후 이를 리턴한다. 생성자 함수는 일반 함수와 구분하기 위해 첫 글자를 대문자로 표기한다. 생성자 함수 내에는, 반환될 객체가 어떤 변수와 메소드를 가져야 하는지를 기술해줌으로써 , 그 객체가 가지고 있는 정보, 그리고 그 객체가 할 수 있는 일을 세팅해준다. 이것을 초기화(initialize)라고 한다.
1) ES5 문법에서의 생성자 함수 및 프로토타입
function Car(brand, name, color){ // 생성자 함수 Car를 초기화 한다. this.brand = brand; // 생성자 함수 Car를 통해 반환될 객체의 property를 정의하고 있다. this.name = name; this.color = color; } Car.prototype.refuel = function(){ // 생성자 함수 Car를 통해 반환될 객체의 method를 정의하고 있다. return '연료를 공급해주세요'; } Car.prototype.drive = function(){ return '운전을 시작합니다'; }
2) ES6의 클래스 문법
class Car { constructor(brand, name, color){ this.brand = brand; //속성을 정의하고 있다. this.name = name; this.color = color; } refuel() { // 메소드를 정의하고 있다. return '연료를 공급해주세요'; } drive(){ return '운전을 시작합니다'; } }
3) 인스턴스에서의 사용 예시.
let avante = new Car('hyundai', 'avante', 'black'); avante.color; // 'black' avante.drive(); // '운전을 시작합니다'
3. Object함수 방식
: 인자로 전달되는 값에 따라 예기치 않은 결과가 반환될 수 있어서 추천되는 방식은 아니다.
*참고 : https://webclub.tistory.com/513
let book = new Object(); // 빈 객체 생성 book.title = 'The hobbit'; // property와 value를 추가한다 book.author = 'J.R.R. Tolkien'
'JavaScript' 카테고리의 다른 글
객체 지향 프로그래밍(3) - prototype과 __proto__ (0) 2020.06.19 객체 지향 프로그래밍(2) - prototype이 필요한 이유 (0) 2020.06.19 함수 이해하기 (0) 2020.06.04 동기, 비동기 (0) 2020.05.27 DOM을 활용한 간단한 유효성 검사 예제 (0) 2020.05.22