728x90
const obj = {
author: "cotist",
age: 10
}
위와 같이 author, age 두 개의 키를 가진 객체가 있고 같은 양식의 객체들이 필요하다면 어떻게 해야할까?
위의 객체를 ctrl+c, ctrl+v를하여 객체명과 키의 값만 바꿔도 되긴 하겠지만 키가 개수가 많아질수록 반복되는 코드가 늘어나고 결국은 레거시처럼 보일 것이다. (레거시처럼 보이는게 아니고 레거시가 맞다.)
// bad example
const obj1 = {
author: "cotist1",
age: 10
}
const obj2 = {
author: "cotist2",
age: 11
}
const obj3 = {
author: "cotis3",
age: 12
}
const obj5 = {
author: "cotist4",
age: 13
}
const obj6 = {
author: "cotist5",
age: 14
}
const obj7 = {
author: "cotist6",
age: 15
}
이를 해결하기 위한 것이 생성자이다.
말 그대로 객체를 생성하는 위한 것.
// 생성자를 활용한 객체 생성
// this 마침표 뒤에 문장이 키, 인자로 받는 값이자 우변의 값이 키의 값이다.
function Constructor(language, score) {
this.language = language;
this.score = score;
}
// const에 선언된 변수명이 객체명이다.
const obj1 = new Constructor("javascript", 100);
const obj2 = new Constructor("python", 90);
const obj3 = new Constructor("c", 95);
주석으로도 설명이 되어 있지만..
생성자 선언 시에 키는 "this.키", 키의 값은 인자로 받고 우변으로 놓으면 끝이다.
그리고 생성자를 불러와서(호출) 객체를 생성하고자 하면 위의 예시와 같이 const 객체명을 선언하고 new를 추가로 붙이고 함수 쓰듯이 하면 된다.
혹시 받아야하는 인자(키)의 개수보다 생성자 호출 시 선언한 인자를 적게 두면 어떻게 될까?
선언되지 않은 키의 값은 undefined로 처리가 된다.
인자가 더 적게 불러와졌을 경우에 키의 값이 undefined가 아닌 다른 값으로 초기화하고 싶다면 아래와 같이 삼항연산자를 이용하도록 하자
function Constructor(author, age) {
this.author = author;
this.age = age === undefined ? "10" : age;
}
const minsoo = new Constructor("cotist");
728x90
'Basic > JavaScript' 카테고리의 다른 글
[JavaScript] 나머지 매개변수 - 함수 인수 유동적으로 받기 (0) | 2023.04.02 |
---|---|
[JavaScript] 문자형(string) 실수(숫자) 데이터, 세자리마다 콤마 구현하기 (0) | 2023.03.30 |
JSDoc 을 이용하여 JavaScript 파일 문서화하기 (0) | 2022.10.23 |
[JavaScript] 객체(Object)의 접근, 요소 추가 (0) | 2022.07.31 |
[JavaScript] var Hoisting(호이스팅) - var 선언을 주의하세요 (0) | 2022.02.22 |