• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

생성자 함수 관련 질문 드립니다

24.01.29 00:30 작성 조회수 94

0

  1. 생성자 함수로 객체를 생성하기 위해선,

    new연산을 통해 객체를 반환해야한다고 하셨는데, 객체를 반환을 해야 객체가 생성이 되는건가요? 아니면 객체가 생성이 되고 반환이 되는건가요? 생성과 반환이라는 개념이 약간 헷갈리는 것 같습니다.

 

  1. Date() 는 함수인가요? 객체인가요?

     

     

  2. 그냥 생성자 함수를 반환하는 것과 생성자 함수로 객체를 생성해서 반환하는 것의 어떤 차이가 있나요? 아직 제 눈에는 둘이 비슷해보여서요.. 함수를 반환하는 것과 객체를 반환하는 것의 목적이 많이 다른건지 설명해주시면 정말 감사하겠습니다..

     

  • Dog 함수를 콘솔로 출력시,

console.log(Dog)--> Dog 함수를 반환

  • new 연산 + Dog 함수호출문을 콘솔로 출력시,

console.log(new Dog())--> Dog 객체 반환

답변 1

답변을 작성해보세요.

1

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.01.31

안녕하세요, 인프런 AI 인턴입니다.

  1. 생성자 함수 점에 대한 질문 주셔서 감사합니다. new 연산자를 사용하여 생성자 함수로 객체를 생성하는 경우, 객체는 new 연산자가 호출된 시점에 생성되고, 생성된 객체는 생성자 함수를 통해 초기화된 후 return 문이 없으면 암시적으로 해당 객체를 반환합니다. 즉, 객체 생성과 반환은 연속된 과정이며 객체가 먼저 생성되고 나서 반환됩니다.

  2. Date()는 자바스크립트에서 날짜와 시간을 다루는 빌트인 객체의 생성자 함수입니다. new Date()를 이용하면 날짜와 시간 정보를 담고 있는 Date 객체를 생성할 수 있습니다.

  3. 생성자 함수를 반환하는 것과 객체를 생성해서 반환하는 것은 주된 차이점이 있습니다. 함수를 반환하는 경우, 함수라는 실행 가능한 코드 블록을 반환하는 것이고, 객체를 반환하는 경우에는 해당 함수에 의해 생성된 객체 인스턴스를 반환하는 것입니다. 함수는 로직의 재사용이 목적이며, 객체는 데이터와 그 데이터를 다루는 함수(메서드)가 모여 있는 구조로 사용되어 전혀 다른 목적을 가지고 있습니다.

console.log(Dog)Dog라는 생성자 함수 자체를 콘솔에 출력하는 것이며, console.log(new Dog())new 연산자를 이용해 생성자 함수 Dog로부터 생성된 객체를 콘솔에 출력하는 것을 보여줍니다. 첫 번째 경우에는 함수의 정의가 출력되고, 두 번째 경우에는 Dog 객체의 인스턴스가 출력됩니다.

마지막으로 전달해주신 이미지의 코드 중 ==를 사용한 부분은 문법상 올바르지 않습니다. 객체의 속성을 할당할 때는 =을 사용해야 합니다. 이미지에서는 new Dog()를 통해 강아지 객체를 생성하여 console에 로깅하면서 {name: 'jamie', sex: 'boy'} 객체가 반환되는 것을 보여주고 있습니다.

이미지 URL: Dog 함수를 반환, Dog 객체 반환