• 카테고리

    질문 & 답변
  • 세부 분야

    웹 개발

  • 해결 여부

    미해결

질문있습니다.

21.08.16 21:48 작성 조회수 134

0

안녕하세요 선생님. 객체 강의까지 잘 들었습니다. 감사합니다.

질문이 있습니다.

일단, 강의에서는 Class 에 대해서는 언급만 잠깐 하고 넘어가서
개인적으로 prototype 때문에
1. 생성자함수안에 멤버함수를 정의했을때
2. 생성자함수안에 멤버변수만 정의하고, 멤버함수는 prototype 에 따로 정의했을 경우
3. Class 를 정의했을 경우를 비교해봤습니다.

[1. 생성자함수에 전부 정의했을 경우]

[2. 생성자함수만 정의하고, prototype을 통해 introduce Func 을 등록하고 객체를 생성한 경우 ]

[3. Class 에 introduce Func 정의만 해서 객체를 생성한 경우 ]

이와 같이 결과가 나왔다는 것은
클래스에서는 따로 prototype 에 공유할 Func 을 정의하지 않아도
Class 를 정의하는 과정에서 이미 그 과정을 진행한거라고 생각하는 게 맞을까요 ??

============================

추가질문으로는 Card 예제에서, Card 생성자함수 정의에서의 

Card 생성자함수에 this.init( ) 이 조금 헷갈립니다.

Card 생성자함수를 "호출"하는 시점은 결국 마지막에 있는 new 연산을 만났을 때 이뤄나기 때문에

그 시점에서는 Card 생성자함수 내부에 this.init( ) 에서 init 프로퍼티에 대한 존재는 이미 알고 있기 때문에 정상적으로 호출되는 것이라고 이해해도 될까요 ??

답변 1

답변을 작성해보세요.

0

1. 네 맞습니다. class 문법의 메소드로 정의하면, 내부적으로는 prototype 메소드로 만들어집니다. 이런 식으로 기존 동작과 같지만 편의상 추가된 문법을 Syntatic Sugar라고도 부른다네요!

2. 네 맞습니다. 미리 생성자(또는 클래스)를 세팅해두고, 필요한 시점에 인스턴스를 생성하면서 생성자 함수가 호출된다고 생각하시면 되는거죠~