建構函式和類

122www發表於2024-12-08

例項: 是由類或建構函式建立的具體物件,透過 new 關鍵字呼叫建構函式建立,或透過 class 關鍵字定義類並建立

類方法/靜態方法:它是定義在類或建構函式本身上的方法,透過類或建構函式呼叫,不能透過例項呼叫

1.透過構造器建立例項建立靜態方法

函式透過關鍵字 function 定義。函式同樣可以透過內建的 JavaScript 函式構造器(Function())定義。建構函式又稱為構造器。

建構函式也是一個普通的函式,命名以大寫字母開頭,從表現形式來說,和普通的函式沒有任何區別。

構造方法是一種特殊的方法:

  • 構造方法名為 constructor()。
  • 構造方法在建立新物件時會自動執行。
  • 構造方法用於初始化物件屬性。
  • 如果不定義構造方法,JavaScript 會自動新增一個空的構造方法
function Person(name, age) {
    this.name = name;
    this.age = age;
    this.describe = function() {  //定義例項方法
        return this.name + " is " + this.age + " years old"; 
    };
}
var person1 = new Person("Alice", 30);
console.log(person1.describe()); // 輸出: Alice is 30 years old

建構函式內部定義方法是一種常見的做法,但這種方法會導致每個例項都會重新建立這些方法,從而佔用更多的記憶體。為了最佳化記憶體使用,通常推薦在建構函式的原型(prototype)上定義方法,這樣所有例項都會共享同一個方法,從而減少記憶體消耗‌。

因此上面的建議改成:

function Person(name, age) {
    this.name = name;
    this.age = age;
}
Person.prototype.describe = function() { //定義靜態方法
    return this.name + " is " + this.age + " years old";
};
var person2 = new Person("Bob",19)

2.透過類來建立例項和靜態方法

類是用於建立物件的模板

我們使用 class 關鍵字來建立一個類,類體在一對大括號 {} 中,我們可以在大括號 {} 中定義類成員的位置,如方法或建構函式。

每個類中包含了一個特殊的方法 constructor(),它是類的建構函式,這種方法用於建立和初始化一個由 class 建立的物件

按照建構函式形式建立類,不僅僅和編寫普通的函式過於相似,而且程式碼並不容易理解

.每個類都可以有一個自己的建構函式(方法),這個方法的名稱為固定的constructor
.每個類只能有一個constructor,如果包含多個建構函式,那麼會丟擲異常
.當我們透過new一個類的時候會呼叫這個類的constructor,這時new做的事情和new一個建構函式做的事情是一樣的。

// 定義一個名為Person的類
class Person {
    // 建構函式,用於建立類的例項
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }
 
    // 例項方法,用於列印物件資訊
    printInfo() {
        console.log(`Name: ${this.name}, Age: ${this.age}`);
    }
 
    // 靜態方法
    static jumping = function(){ 
console.log(this.name + '在jumping')
}
} // 使用建構函式建立Person物件例項 const person2 = new Person('Bob', 30); person2.printInfo(); // 輸出: Name: Bob, Age: 30

相關文章