constructor 질문있습니다!
강의 마지막에 있는 constructor를 보고 궁금증이 생겨서 코드를 한번 만들어서 돌려봤는데, 제가 생각한것과 전혀 다른 ? 방식으로 동작해서 질문드립니다. 아래 코드를 보면, 생성자에 name을 받고, 상위의 클래스를 통해서 생성자호출을 하였는데, 왜 클래스 필드의 초기값이 p1.name이 iu가 아니라 다른 값이 나올까요?
참고: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Public_class_fields
Public instance fields are added with Object.defineProperty() either at construction time in the base class (before the constructor body runs), or just after super() returns in a subclass.
라고 되어있는데 이게 후자에 해당하는 부분인가요? 저는 이해가 안가는 부분이, 클래스필드를 생성자를 통해서 초기화를 해주어야 맞지 않나? 라는 생각을 하고 있거든요..
class Person {
name = 'memberPerson';
constructor(name){
this.name = name;
}
}
class Programmer extends Person {
name = 'memberProgrammer';
constructor(name) {
super(name);
}
}
const p1 = new Programmer('iu');
p1.name;
>>> memberProgrammer
답변 2
1
안녕하세요
말씀하신대로 후자에 해당하는 동작으로 보입니다
Programmer 의 초기화는 super 이후에 시작된다는 의미라고 생각하면 이해가 되는 부분이라고 생각됩니다
아래처럼 자바에서 실행해보니 자바도 bbb 가 출력되고 있네요
public class HelloWorld{
public static void main(String []args){
B b = new B("ccc");
System.out.println(b.name);
}
}
class A{
public String name = "aaa";
public A(String name) {
this.name = name;
}
}
class B extends A{
public String name = "bbb";
public B(String name) {
super(name);
}
}
프론트엔드 학습 수준 문의
0
22
2
리액트 챕터별 코드에서 eslint 설정파일이 없어요
0
38
2
최근 코테, 과제 테스트 트렌드
0
55
2
lucide react 아이콘 설치
0
35
2
17강 zustand store 서버에서 생성
1
30
1
문의관련 문의
0
37
2
next.js 를 2대이상 실행하는 경우 제공하는 cache 기능들은 어떻게 되나요?
0
47
2
yield 입력값
0
374
1
화살표함수에서 아규먼츠를 사용할수없어서 매개변수를 사용하라고 하셨는데..
0
309
1
실전자바스크립트 var문제점
0
280
1
강의 자료는 어디 있나요?
0
289
1
github에 정리좀하려고하는데, 해당 예제코드들 따로 공유가능할ㄲ요?
0
259
1
3:18 부분 질문드립니다. (lexical environment)
0
234
1
2:30초 경 그림 질문
0
342
3
nulish coalescing 과 optional chaining의 차이점은 무엇인가요?
0
322
1
프로토타입 예제에서 궁금한게 있습니다.
0
233
2
마지막 예제 질문드립니다.
1
199
1
궁금해서 명세를 찾아봤는데요
1
204
3
2:24경 설명
1
170
1
7분42초
1
167
1
리액트 내에서 const질문입니다.
1
193
1
궁금한것이 있습니다.
1
328
1
sample 파일 예제 소스는 어디있죠 ??
1
263
1
각 함수가 실행되면
2
174
1





