class와 super의 개념이 헷갈려서 정리하고자 한다.
1. super는 새로운 객체를 만드는 것이 아니다.
super는 참조하고자 하는 객체에서 가져오는 것이지, 새로운 객체를 만드는 것이 아니다.
// class로 객체 생성자 만들기.
class User {
constructor(userId, name) {
(this.userId = userId), (this.name = name);
}
}
class UserDouble extends User {
constructor() {
super();
}
}
// FROM 객체 To 배열
const user1 = new UserDouble("1", "새로운 정보 1");
const user2 = new UserDouble("2", "새로운 정보 2");
console.log(user1);
console.log(user2);
- User는userId, name 속성을 가지고 있는 객체이다.
- UserDouble은 User를 그대로 상속받는다. 그래서 userId와 name 속성을 그대로 가져올 수 있다. 주의할 점은 객체를 새롭게 만드는 것이 아니기 때문에 userId와 name은 User의 인자이다.
- UserDouble에 인스턴스를 만들 때 매개 변수가 없기 때문에 user1, user2의 결과값은 undefined가 나올 수 밖에 없다.
// class로 객체 생성자 만들기.
class User {
constructor(userId, name) {
(this.userId = userId), (this.name = name);
}
}
class UserDouble extends User {
constructor(newUserId) {
super(newUserId);
}
}
// FROM 객체 To 배열
const user1 = new UserDouble("1", "새로운 정보 1");
const user2 = new UserDouble("2", "새로운 정보 2");
console.log(user1);
console.log(user2);
UserDouble에 newUserId라는 매개 변수를 추가하였다.
- newUserId는 userId 라는 속성의 값으로 들어가게 된다.
- name에는 들어갈 매개 변수가 없기 때문에 undefined로 출력된다.
// class로 객체 생성자 만들기.
class User {
constructor(userId, name) {
(this.userId = userId), (this.name = name);
}
}
class UserDouble extends User {
constructor(newUserId, newInfo) {
super(newUserId);
// 새로운 정보 추가
this.newInfo = newInfo;
}
}
// FROM 객체 To 배열
const user1 = new UserDouble("1", "새로운 정보 1");
const user2 = new UserDouble("2", "새로운 정보 2");
console.log(user1);
console.log(user2);
newInfo 라는 매개 변수를 추가하고, 새로운 속성을 UserDouble에 추가한다.
- 위와 동일하게 newUserId는 userId의 값으로 들어간다.
- newInfo는 새로운 속성인 newInfo의 값으로 들어간다.
- name은 undefined가 들어간다.
결론을 말하자면,
- constructor에 있는 매개 변수에 의하여 인스턴스를 만들 수 있게 된다. (정보 제공하기.)
- super를 통하여 부모 객체에서 상속 받을 수 있고, 속성에 해당하는 값을 넣어줄 수 있다. 이 때, 속성은 부모의 속성이다. 자식의 속성이 아니다.
- 새로운 객체의 속성과 값을 추가할 수도 있다.
처음에 새로운 객체를 상속을 통하여 만드려고 시도했었다.
하지만 위와 같은 이유로, 새로운 객체를 만들 때 상속을 이용할 수가 없다.
class User {
constructor(userId, name) {
(this.userId = userId), (this.name = name);
}
}
class UserDouble extends User {
constructor(userId, name) {
super(userId, name);
super(userId, name);
}
}
// FROM 객체 To 배열
const user1 = Object.assign([], new UserDouble("10", "J"));
const user2 = Object.assign([], new UserDouble("11", "M"));
console.log(user1);
console.log(user2);
// 원하는 데이터 형식
[
{ userId: "10", name: "J" },
{ userId: "10", name: "J" },
];
[
{ userId: "11", name: "M" },
{ userId: "11", name: "M" },
];
'web > javascript 기초' 카테고리의 다른 글
[패스트캠퍼스] 국비지원 data practice (0) | 2023.05.23 |
---|---|
[패스트캠퍼스] 국비지원 javascript data (0) | 2023.05.22 |
[패스트캠퍼스] 국비지원 17일차 학습일지 (0) | 2023.05.21 |
[패스트캠퍼스] 국비지원 15일차 학습일지 (0) | 2023.05.19 |
[패스트캠퍼스] 국비지원 14일차 학습일지 (0) | 2023.05.18 |