私たちは日常の開発で new 演算子をよく使用して、それが何をするかを確認します。
そしてその実装原理 javascriptでは、①オブジェクトリテラル ②新しい式の2つの方法でオブジェクトを作成します。
// 字面量形式
let person = {
name: '王新焱',
age: 33
}
// 构造函数形式 (new)
function Person(name, age) {
this.name = name
this.age = age
}
let person = new Person()
オブジェクトリテラルの記述の欠点は、新しいオブジェクトが作成されるたびに完全な定義ステートメントを記述する必要があることです。これは、同じタイプのオブジェクトを多数作成するのに不便であり、高度な機能の使用を助長しません。継承など。
new 式はコンストラクターと組み合わせて使用され、新しいコンストラクターはコンストラクターのプロパティを継承するために使用されます。
Person の新しいインスタンスを作成するには、new 演算子を使用する必要があります。この方法でコンストラクターを呼び出すには、次の 4 つの手順を実行します:
①. 空の単純な JavaScript オブジェクト (つまり {}) を作成する
②. 属性 __proto__ を新しく作成したオブジェクトに追加し、その属性をコンストラクターのプロトタイプ オブジェクトにリンクします。
③ . 新しく作成したオブジェクトをこのコンテキストとして使用する
④. 新しいオブジェクトを返す
コンストラクタとは
新しい関数名を使用してオブジェクトをインスタンス化する関数は、コンストラクターと呼ばれます。コンストラクタと通常の関数に大きな違いはありませんが、関数名の頭文字が大文字になっている関数をコンストラクタと区別するために、主な機能は、コンストラクタが new キーワードでオブジェクトを作成し、プロパティとプロパティを追加することです。メソッドを初期化されたオブジェクトに追加します。
コンストラクターは、技術的には通常の関数です。ただし、2 つの規則があります。
①. 彼らの名前は大文字で始まります。
②. 「new」オペレータのみが実行できます。
コンストラクタの例を次に示します。
// 构造函数Person
function Person(name, age) {
this.name = name
this.age = age
}
let p = new Person('王新焱', 33)
console.log(p) // { name: '王新焱', age: 33 }
p.constructor === Person // true
p.__proto__ === Person.prototype // true