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 구문.