JavaScript의 new 연산자란?
JavaScript에서 new 연산자는 사용자가 정의한 객체 타입(user-defined object type)의 새로운 인스턴스를 생성하는 데 사용되는 키워드입니다. 생성자 함수와 함께 호출되면, new 연산자는 빈 객체를 만들고 해당 객체를 생성자 함수에 바인딩한 후, 최종적으로 완성된 객체를 반환합니다.
쉽게 말해, new 연산자는 하나의 설계도(생성자 함수)를 바탕으로 실제로 사용할 수 있는 객체(인스턴스)를 찍어내는 역할을 한다고 이해할 수 있습니다.
기본 문법
new 연산자의 기본적인 사용 형식은 다음과 같습니다.
new constructor[([arguments])]
- constructor: 객체를 생성할 생성자 함수 또는 내장 객체 생성자(Object, Date, Array 등)
- arguments: 생성자 함수에 전달할 매개변수 목록 (필요하지 않으면 생략 가능)
new 연산자의 동작 원리
new 연산자가 실행되면 내부적으로 다음 네 단계가 순서대로 진행됩니다.
- 새로운 빈 객체({})를 메모리에 생성합니다.
- 새 객체의 프로토타입([[Prototype]])을 생성자 함수의 prototype 속성으로 설정합니다.
- 생성자 함수를 실행하며 this를 새로 생성된 객체에 바인딩합니다.
- 생성자 함수가 명시적으로 객체를 반환하지 않으면, 생성된 객체를 자동으로 반환합니다.
사용 예제
다음 예제는 new 연산자를 활용해 Object 객체의 인스턴스를 생성하고, 여러 속성을 추가한 뒤 화면에 출력하는 방법을 보여줍니다.
<!DOCTYPE html>
<html>
<body>
<p id="test"> </p>
<script>
// new 연산자로 객체 인스턴스 생성
var dept = new Object();
// 객체에 속성 추가
dept.employee = "David";
dept.department = "Programming";
dept.technology = "C++";
// 결과 출력
document.getElementById("test").innerHTML =
dept.employee + " is working on " + dept.technology + " technology.";
</script>
</body>
</html>실행 결과
David is working on C++ technology.
정리
new 연산자는 JavaScript에서 객체 지향 프로그래밍의 핵심 요소 중 하나입니다. 생성자 함수와 함께 사용하면 동일한 구조를 가진 여러 객체를 효율적으로 생성할 수 있으며, ES6에서 도입된 class 문법 역시 내부적으로는 new 연산자와 같은 방식으로 동작합니다. 따라서 new 연산자의 동작 원리를 정확히 이해해 두면 JavaScript의 프로토타입 기반 구조를 더 깊이 있게 파악하는 데 큰 도움이 됩니다.