[ES6] 12. 객체지향(1). Object 생성기계인 constructor를 만들어 써보자

fe.syhan·2023년 10월 31일

JS 기초

목록 보기
40/52
post-thumbnail

Constructor


학생 리스트를 만들어야 한다고 가정해 보자.

var 학생1 = { name : 'Kim', age : 15 };
var 학생2 = { name : 'Park', age : 15 };
...

30명 만들어야할 때, 위처럼 하드코딩 30개 하는 것 보다

비슷한 오브젝트들이니 복사를 하는게 더 효율적이다.

근데 할당 연산자 ‘=’ 를 이용해 var학생2 = 학생1 이라고 복사할 경우,

의도한 결과가 아니다.

이 때 사용할 수 있는 것이 constructor 문법이다.

인스턴스 생성

function 키워드를 이용해 함수를 만들고

그 안에 this.namethis.age를 집어 넣는다.

이 때 this 는 새로 생성된 오브젝트(인스턴스, instance)를 뜻한다.

//var 학생1 = { name : 'Kim', age : 15 };

function 기계(){
  this.name = 'Kim';
  this.age = 15;
}

var 학생1 = new 기계();
var 학생2 = new 기계();

new 라는 키워드를 사용해 변수에 할당하면 새로운 오브젝트를 만들 수 있다.

생성자 함수에 함수도 올 수 있다.

function 기계(){
  this.name = 'Kim';
  this.age = 15;
  this.sayHi = function(){
    console.log('안녕하세요' + this.name + ' 입니다');
  }
}
var 학생1 = new 기계();
var 학생2 = new 기계();

학생2.sayHi();

파라미터

지금까지의 오브젝트들은 모든 name이 똑같아서 실용성이 없었다.

이를 위해 파라미터를 추가해 각 인스턴스가 각각의 값을 가지게 할 수 있다.

function 기계(이름){
  this.name = 이름;
  this.age = 15;
  this.sayHi = function(){
    console.log('안녕하세요' + this.name + ' 입니다');
  }
}

var 학생1 = new 기계('Park');
var 학생2 = new 기계('Kim');

0개의 댓글