티스토리 뷰

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

반복되는 object를 계속 만드는 것은 너무 비효율적!

constructor(생성자) 사용해서 오브젝트를 복사할 수 있다

 

 

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

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

constructor(생성자)를 오브젝트 복사 기계라고 생각하면 된다.

function이라는 함수 키워드를 사용하면 되고

그 안에 this.name과 this.age를 넣으면 오브젝트 복사 기계가 완성 된다.

this는 새로 생성되는 오브젝트를 뜻한다(멋진 개발자 용어로 인스턴스라고도 함)

고로 this.name은 새로 생성되는 오브젝트의 name에 "Kim"을 넣어달라는 뜻

 

 

오브젝트 복사 기계를 만들었으니

만든 기계를 가지고 새로운 오브젝트를 생성하고 싶다면?

//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();

기계에 this.sayHi()를 추가하면 기계로부터 생성되는 모든 학생들이 sayHi 함수를 가지고 있게 된다.

그럼 모든 학생1, 학생2가 sayHi 함수를 사용할 수 있음 굳

 

 

근데 학생 오브젝트 만들때 각각 다른 이름, 나이값을 부여하고 싶으면?

함수에 파라미터를 추가하면 된다

function 기계(이름,나이){
  this.name = 이름;
  this.age = 나이;
  this.sayHi = function(){
    console.log('안녕하세요' + this.name + ' 입니다. 제 나이는'+ this.age + '입니다.');
  }
}
var 학생1 = new 기계('Park', 20);
var 학생2 = new 기계('Kim', 25);

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함