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