亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

全部開發者教程

JavaScript 入門教程

new 運算符與構造函數

當一個函數被 new 運算符調用的時候,這個函數就會被稱為構造函數。

任何函數都能被 new 運算符調用,但是一般會從設計上將一個函數考慮為構造函數,提供給 new 運算符調用。

function Human(name, gender) {
  this.name = name;
  this.gender = gender;
}

var human = new Human();

1. 構造函數的作用

構造函數的主要作用是用于生成對象。

有其他面向對象語言開發經驗的同學可能會覺得使用 new 運算符的語法和創建類的實例很像,其實本質是不一樣的。

結合原型的特性,在 JavaScript 中也能實現類似于類的一套機制。

關于構造函數和原型的處理關系,原型章節已經有詳細介紹,具體內容可以參考原型章節。

2. new 運算符的運算機制

使用 new 運算符調用函數的時,背后有一套運行機制,這套機制說明了構造函數是怎么產生對象的。

當 new 運算符調用函數時,大致會進行以下幾個操作:

  1. 創建一個空對象
  2. 將函數的this指向這個空對象
  3. 執行函數
  4. 如果函數沒有指定返回值,則直接返回 this(一開始創建的空對象),否則返回指定返回值
function Person(name, gender, age) {
  this.name = name;
  this.gender = gender;
  this.age = age;
}

var person = new Person('小明', '男', 17);

console.log(person.name);

這樣就能理解為什么使用 new 操作符可以生成對象了。

這個機制也是面試的高頻題。

3. 小結

構造函數用于生成對象,理解構造函數和原型機制非常重要,不但是面試中的高頻題,也可以提升編寫高質量、可復用的代碼的能力。