Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 new 연산자와 Object() 생성자의 차이점은 무엇일까요?


new 연산자란?

new 연산자는 객체의 인스턴스(instance)를 생성할 때 사용합니다. 객체를 만들려면 new 연산자 뒤에 생성자 메서드를 붙여 호출하면 됩니다.

아래 예제에서 사용된 생성자 메서드는 Object(), Array(), Date()입니다. 이들은 모두 자바스크립트에 기본적으로 내장되어 있는 함수입니다.

var department = new Object();
var books = new Array("C++", "Perl", "Java");
var day = new Date("December 1, 2017");

Object() 생성자란?

생성자(constructor)는 객체를 생성하고 초기화하는 역할을 하는 함수입니다. 자바스크립트는 객체를 만들기 위한 특별한 생성자 함수인 Object()를 제공하며, 이 생성자가 반환한 값은 변수에 할당됩니다.

해당 변수에는 새로 생성된 객체에 대한 참조(reference)가 저장됩니다. 참고로 객체에 할당되는 속성(property)은 일반적인 변수가 아니며, var 키워드를 사용해 별도로 정의하지 않습니다.

두 개념의 핵심 차이

정리하면, new 연산자는 어떤 생성자 함수든 인스턴스를 만들 수 있게 해주는 도구이고, Object() 생성자는 그 대상이 되는 내장 함수 중 하나입니다. 즉, new 연산자는 '생성 방법'을 의미하고, Object()는 '생성 대상'이라고 이해하면 쉽습니다.

예제 코드

다음은 Object() 생성자와 new 연산자를 함께 사용해 객체를 만들고, 속성을 출력하는 전체 예제입니다.

<html>
   <head>
      <title>Object Constructor</title>
      <script>
         var book = new Object(); // 객체 생성
         book.subject = "Perl"; // 객체에 속성 할당
         book.author = "Tutorialspoint";
      </script>
   </head>
   <body>
      <script type="text/javascript">
         document.write("Book name is : " + book.subject + "<br>");
         document.write("Book author is : " + book.author + "<br>");
      </script>
   </body>
</html>

실행 결과

Book name is : Perl
Book author is : Tutorialspoint