new와 생성자 함수로 같은 형태의 객체를 만듭니다.
new는 빈 객체를 만들고 prototype을 연결한 뒤 생성자 안의 this로 초기화합니다. 생성자 함수 이름은 대문자로 시작하는 관례가 있으며 현대 코드에서는 class 문법도 사용합니다.
new Course에 HTML과 48을 넘기면 새 빈 객체가 this로 전달되고, 생성자 본문이 title과 lessons 속성을 채운 뒤 그 객체가 html에 담깁니다. summary는 각 객체가 아니라 Course.prototype에 한 번만 정의되어 있지만, html.summary()를 호출하면 프로토타입에서 메서드를 찾아 this를 html로 실행하므로 HTML: 48강이 나옵니다.
프로토타입에 둔 메서드는 모든 인스턴스가 함수 하나를 함께 씁니다. html.summary === css.summary가 true인 이유이고, 생성자 본문에서 this.summary에 함수를 대입했다면 객체를 만들 때마다 함수가 새로 생깁니다. 어떤 생성자로 만든 객체인지는 html instanceof Course로 확인합니다.
new를 빼고 생성자 함수를 호출하면 strict mode에서 this가 undefined가 됩니다.
직접 바꿔보세요JavaScript 강좌 객체를 하나 더 생성하세요.