[DEV] javaScript - 객체 지향 프로그래밍

headerimg javaScript에서의 객체 지향

Objects(객체)

대학을 컴퓨터과학이나 관련 학과를 다니면서 객체라는 소리를 오지게듣는다.

하지만 JS에서 사용법은 아무도 안알려줘.. 아니 대학시절엔 JS과목은 없었다. 띠용

흠터레스팅..

html css js를 배우다보면 어 너무쉽네 라고 생각하게 만든다.

그리고 정신차리고 보면 Code는 스파게티처럼 꼬여만가고 아이고야.


1. 변수의 객체 객체는 뭐냐

객체 또는 오브젝트(object)는 저장공간에서 할당되어 값을 가지거나 식별자에 의해 참조되는 공간을 의미하며, 변수, 자료 구조, 함수 또는 메소드가 될 수 있다. 프로그래밍 언어는 변수를 이용해 객체에 접근하므로 객체와 변수라는 용어는 종종 함께 사용된다. 그러나 메모리가 할당되기 전까지 객체는 존재하지 않는다.

음…….

그래 맞는말인데 간단하게 하면?

그냥 덩어리다.

코드를 보면 그냥 car변수 그러니까 차가 있다. 차에 속해있는 부품이나 그런건 뭐가있지? 바퀴, 엔진, 좌석 등등

var car = {
  "wheels":4,
  "engines":1,
  "seats":5
};

console.log( "차의 바퀴 수는? -> ", car.wheels );

// 차의 바퀴 수는? -> 4

훨신 쉽다.


2. 함수의 객체 그래 변수의 객체는 알았어. 그럼 함수의 객체는 뭐지

const MotorBike = function() {
  this.wheels = 2;
  this.engines = 1;
  this.seats = 2;
};

함수도 아까 변수처럼 객체화 시킬 수 있다. 다른점은 this대문자로 시작했다는 점이다.


함수의 객체는 사실 Constructor라고한다. 왜 생성자일까?

const Car = function makingMyCarForTrip(wheels, engines, seats) {
  this.wheels = wheels;
  this.engines = engines;
  this.seats = seats;
};
const myCar = new Car(4, 1, 5);
myCar.windows = 6;

console.log(myCar);

/*
[object Object] {
  engines: 1,
  seats: 5,
  wheels: 4,
  windows: 6
}
*/

생성자에 함수의 파라미터를 추가하는 것도 좋은 방법이다. 이러면 생성 할 때마다 다른 자동차를 만들 수 있다.

마치 변수에 new Array(); 하듯이 똑같다. 이런식으로 myCar변수에 Car 생성자가 들어갔다(?) 바퀴, 엔진, 좌석에 접근할 수도 있고 새로 windows를 만들 수 도 있다. 아니면 차를 여러대 만들 수 도 있다.

3. 객체의 Private 사실 객체지향에서 요구하는 원칙이나 디자인패턴은 상당히 철저하다. 근데 막상 읽다보면 음.. 이유가.. 뭔데 실전에서 왜 그래야하는데?


© 2018. All rights reserved.