새 키워드

new를 사용하여 함수를 호출하면 호출된 함수를 해당 객체의 '생성자'로 사용하여 새 객체가 생성됩니다.

function MyFunction() {}
const myObject = new MyFunction();

typeof myObject;
> "object"`

이를 통해 '생성자 함수'가 생성용 템플릿을 제공하여 객체를 생성할 수 있습니다.

function MyFunction() {
  this.myProperty = true;
}
const myObject = new MyFunction();

myObject.myProperty;
> true

생성자 내 this의 값 함수는 생성 중인 객체를 참조하여 객체가 채워질 수 있도록 합니다. 만들 때 속성과 메서드를 함께 사용하여 쿼리합니다. 이렇게 하면 데이터 값과 조치를 취하는 데 필요한 메서드가 포함된 객체 생성 데이터를 단일 휴대용 단위로서의 '캡슐화'라는 개념으로 구현하는 것입니다.

function MyFunction( myArgument ) {
    this.myValue = myArgument;
    this.doubleMyValue = () => myArgument * 2;
}
const myObject = new MyFunction( 10 );

myObject.myValue;
> 10

myObject.doubleMyValue();
> 20

this는 현재 실행을 나타냅니다. 함수의 컨텍스트입니다. 즉, 생성자 함수가 this 값에 대한 규칙을 따릅니다. 예를 들어 전역 바인딩을 사용하도록 의도된 용도 다음과 같이 독립적으로 호출될 때 this의 값에 관한 정보를 제공합니다.

function MyFunction() {
    console.log( this  );
}
const myObject = new MyFunction();
> MyFunction { }

MyFunction(); // Global `this` binding outside of strict mode is `globalThis`
> Window {  }

(function() {
    "use strict";
    function MyFunction() {
            console.log( this );
    }
    MyFunction();  // Global `this` binding inside of strict mode is `undefined`
}());
> undefined

생성자 함수의 첫 번째 문자를 대문자로 표기하는 것이 일반적입니다. 자바스크립트의 기본 제공 식별자에 의해 설정된 명명 패턴을 따르는 팩토리 함수입니다. 때때로 두 용어가 서로 같은 의미로 사용되는 것을 볼 수도 있지만, 생성자 함수—새로 구성된 new 키워드로 호출될 때의 객체로서 'factory'와 다름 함수'를 사용합니다. 이는 명시적으로 return 객체의 현재 상태를 나타냅니다.

function myFunction( myArgument = false ) {
  return { "myProperty" : myArgument };
}
const myObject = myFunction( true );

myObject;
> Object { myProperty: true }

기본 원칙은 동일하지만 커스텀 학습의 사용 사례는 생성자 함수는 더 많은 기능을 갖춘 ES6에 도입된 Class 구문.