Constructor function(생성자 함수)
객체 양산 함수, 즉 객체를 찍어내는 함수이다.
이전에는 하나의 객체마다 키와 값을 부여해줬다면, 컨스트럭터와 new 라는 객체생성 키워드를 사용하여
컨스트럭터에 정의되어 있는 속성과 메소드를 한번에 받아올 수 있고, 각각의 값은 매개변수로 받아 각 상황마다 변경하여 사용할 수 있다.
// 함수에 매개변수를 만들어준다
function Person(name,first,second,third){
this.name =name;
this.first=first;
this.second=second;
this.third=third;
this.sum=function(){
return this.first+this.second+this.third;
}
}
// 생성자함수
// ()안에 입력값을 줄 수 있다
let kim = new Person('kim',10,20,30); 객체를 반환해줌, new Person 공장
let lee = new Person('lee',10,10,10);
console.log("kim.sum()",kim.sum());
console.log("lee.sum()",lee.sum());
//kim.sum() 60
//lee.sum() 30
// 객체 양산 공장(constructor)의 필요성?
// 속성이 삭제되거나 추가될때 각 객체를 일일이 바꿀 필요가 없어짐.
let d1 = new Date('2023-03-11');// 객체를 반환해줌, new Date 공장
console.log('d1.getFullYear()',d1.getFullYear());
console.log('d1.getMonth()',d1.getMonth());
console.log('Date',Date);
//d1.getFullYear() 2023
//d1.getMonth() 2
//Date [Function: Date]
console.log('Person()',Person());//아무것도 아닌 함수
console.log('new Person()',new Person());// new를 붙이면, 아무것도 아닌 함수가 아니라 생성자 함수가 된다
//Person() undefined
/*new Person() Person {
name: undefined,
first: undefined,
second: undefined,
third: undefined,
sum: [Function (anonymous)]
}*/
생성자함수 주의사항
클래스 내에서 생성자 함수(constructor)는 하나만 있을 수 있습니다.
생성자 함수는 인스턴스 객체를 생성하고 초기화하는 특별한 메서드입니다.
생성자 함수를 작성하지 않으면, 기본 생성자(default constructor)가 제공되며, 기본(base) 클래스일 경우는 기본 생성자는 비어있으며, 파생(derived) 클래스일 경우 기본 생성자는 부모 생성자를 부릅니다.
'Javascript' 카테고리의 다른 글
Class (+constructor 생성자함수) (0) | 2023.03.11 |
---|---|
prototype(=유전자: 객체들이 공통적으로 사용하는 속성값) (0) | 2023.03.11 |
this (=나, this가 속해있는 메소드가 속해있는 객체를 가리킴) (0) | 2023.03.11 |
Built-in Object(=내장 객체) (0) | 2023.03.11 |
Object loop (객체와 반복문) (0) | 2023.03.11 |