• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

인스턴스 생성

23.03.03 17:23 작성 23.03.03 17:30 수정 조회수 324

1

안녕하세요.

클래스 생성자 설정시 ()를 붙여주는 부분에 대해 여쭤보고자 합니다.

인스턴스 생성시에는 class를 지정하여 함수처럼 불러옵니다. 아래와 같이 ()를 붙여서요.

let deque = new Deque()

 

constructor에서는 함수 형태가 아니라 ()없이 객체를 불러옵니다.

  constructor()
    {
        this.list = new DoublyLinkedList;
    }

 

해쉬 테이블에서는 constructor안에서 for구문을 구동하면서, 어레이를 생성하는데 함수로서 불러옵니다.

 constructor()
    {
        this.arr = []; 
        for (let i =0; i<10 ; ++i)
        {
            this.arr[i] = new DoublyLinkedList(); 
        }

이렇게 객체로 불러오는 것과 함수 형태로 ()를 붙여 불러오는 것이 어떤 차이가 있는지 궁금합니다.

지난해 들어보다가 너무 어려워서 자바스크립트와 c++기초를 조금 듣고 와서 나머지 진도를 진행하고 있습니다. 그림을 통해 이해하기 쉽게 만들어주셔서 따라하면서 .. 흥미롭게 배우고 있습니다~

답변 2

·

답변을 작성해보세요.

1

elena님의 프로필

elena

질문자

2023.03.03

아, 제가 오해를 했나 봅니다. constructor내에 ()를 붙이지 않고 코딩을 했었고 오류 없이 실행이 되었는데, test파일에서는 ()를 붙이지 않으면 실행이 되지 않았는데 원문을 자세히 살피지 않았네요. 재확인해보니 전부 ()를 붙여서 써주셨어요. 감자님, 빠른 답변 감사드립니다.

파이팅입니다! 🤗
궁금하신 점 있으시면 언제든지 질문주세요~ ㅎㅎ

0

안녕하세요 elena님!

인스턴스 생성에 대해서 궁금증이 있으시군요?

어려울 때 쉬는 건 좋은 방법이라고 합니다. (뇌가 잠잘 때 학습한 걸 정리한대요! 그래서 당시에 이해 안가던 것들도 나중에 이해가 된다고 하더라구요?)

질문해주신 인스턴스 생성방법에서

  constructor()
    {
        this.list = new DoublyLinkedList;
    }

이렇게 괄호 없이 적어주는 경우 틀린 문법입니다.
new 연산자를 이용할 때는 괄호를 꼭 붙여주셔야 합니다!

(이렇게 new 연산자를 이용해 객체를 생성했다면 객체가 생생됨과 동시에 해당 객체에 작성한 생성자가 호출됩니다.)

영상과 강의자료에서 Queue의 생성자에서는 괄호를 붙였는데 어떤 부분에서 해당 코드가 있었는지 말씀해주실 수 있나요?

감사합니다 :)