객체는 게임 캐릭터에 비유할 수 있다.
유저들의 게임 캐릭터는 동일한 직업군과 능력치를 가지고 있지만, 세부적인 내용은 다르기때문!
다른 예로 네이버에 가입할 때 입력해야되는 항목은 같지만 그 정보는 사용자마다 다르다.
이렇게 각자 다른 값을 가질 수 있지만 입력해야하는 데이터의 종류가 동일한 경우 객체를 사용하면 손쉽게 데이터 관리할 수 있다.
우선 사전적 의미로는 "하나의 모델이 되는 청사진(blueprint)를 만들고, 그 청사진을 바탕으로 한 object를 만드는 프로그래밍 패턴" 이다.
쉽게 말해서 자동차설계도로 예를 들수있는데 하나의 자동차를 만들기 위해서는 바퀴와 핸들, 좌석 그리고 엔진등이 필요하다. 이것은 차의 종류와는 상관없이 동일하게 적용된다 !
이런 설계도를 바탕으로 각각의 객체가 특정한 자동차 모델로 나오게 된다.
그럼 여기서 나온 예제들의 용어를 구분해주자
하나의 모델이 되는 청사진(blueprint) => class
그 청사진을 바탕으로 한 객체(object)를 만드는 갓 => instance
ES6문법을 바탕
class Car {
constructor(brand, name, color) {
}
}
객체지향 프로그래밍에서는 constructor(생성자)함수를 사용한다.
이것은 인스턴스가 만들어질 때 실행되는 코드!
_(참고로 생성자 함수는 return값을 만들지 않는다고 합니다🤭)
let avante = new Car('hyundai', 'avante', 'black');
인스턴스를 만들 때에는 new키워드를 사용한다!
즉시 생성자 함수가 실행되고 새로운 객체가 할당됨
this===인스턴스 객체
parameter로 넘어온 브랜드, 이름, 색상등은 인스턴스 생성시 지정하는 값이고,
this에 할당한다는 것은 만들어진 인스턴스에 해당parameter을 부여하겠다는 의미이다.
이쯤되면 속성과 메소드가 뭐가 다를까 헷갈리는데 현실세계로 가서 생각을 해보자
예를 들어 자동차의 속성은 [브랜드, 차 이름, 색상, 현재 연료 상태, 최고 속력] 등이 있고
메소드는 쉽게 말해 "객체에 딸린 함수"이다. [연료 주입, 속력 설정, 운전] 등이 메소드다.
그림보면서 외우자!