new
を使用して関数を呼び出すと、呼び出された関数をそのオブジェクトのコンストラクタとして使用して新しいオブジェクトが作成されます。
function MyFunction() {}
const myObject = new MyFunction();
typeof myObject;
> "object"`
これにより「コンストラクタ関数」がChronicle SOAR プラットフォームの 複数のオブジェクトに同じ構造パターンを持たせている場合:
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
慣例として、コンストラクタ関数の
JavaScript の組み込み関数によって確立された命名パターンに従って、
ファクトリ関数を使用します。これらの用語が同じ意味で使われることもありますが
コンストラクタ関数(新しく作成されたオブジェクトに対して動作する関数)
new
キーワードで呼び出された場合、「factory」とは異なります。
確認しましょう。明示的に return
する
呼び出されると自動的に作成されます。
function myFunction( myArgument = false ) {
return { "myProperty" : myArgument };
}
const myObject = myFunction( true );
myObject;
> Object { myProperty: true }
基本原則は同じですが、カスタム コンストラクタ関数は、より充実した機能を持つ方が ES6 で導入された Class 構文。