在 JavaScript 中獲取物件的類名
在物件導向程式設計中,每當我們定義一個類時,就會在類內部自動建立一個建構函式。它將出現在類中,但不可見。只有當程式設計師沒有明確定義它時才會建立它。此建構函式稱為預設建構函式。
我們對理解建構函式很感興趣,因為建構函式的名稱與類名相同。因此,我們很容易在 JavaScript 中使用其建構函式名稱來獲取物件的類名。
建構函式是預設建構函式還是你建立它(程式設計師)都沒有關係;建構函式的名稱將始終與其類名相同。
使用 JavaScript 中的 constructor
函式獲取物件的類名
要建立一個類的物件,我們首先必須呼叫它的建構函式。呼叫建構函式後,我們將其引用儲存在一個變數中,以便稍後我們可以對該物件做任何我們想做的事情。讓我們通過一個例子來理解這一點。
在這裡,我們有一個名為 Person
的空類。我們使用 new
關鍵字建立這個類的一個物件,並呼叫它的預設建構函式 Person()
。然後我們將它儲存在一個名為 obj
的變數中。
現在我們已經建立了一個 Person
類的物件,讓我們在其建構函式的幫助下獲取該物件的類名。
要獲取建構函式的名稱,我們可以使用 JavaScript 中的內建函式 constructor
。它將返回一個函式。要獲取特定的類名,我們必須使用 constructor
函式的 name
屬性。
這顯示在下面的程式碼片段中。
class Person{
}
var obj = new Person();
console.log(obj.constructor.name);
輸出:
Person
你還可以在一個類中建立一個函式,該函式將返回上述 constructor
函式。並且在建立了這個類的一個物件之後,你可以任意呼叫這個函式並得到那個物件的類名。
這顯示在下面的程式碼片段中。
class Person {
getClassName() {
return this.constructor.name;
}
}
在這裡,我們必須使用一個 this
關鍵字,它將引用正在呼叫 getClassName()
方法的當前物件並返回其類名。
唯一需要擔心的是,如果你正在縮小 JavaScript,建構函式的名稱將在縮小後發生變化。如果你呼叫了 getClassName
函式,它將返回一些其他類名,這些類名將在縮小後出現,而不是 Person
。
此外,IE9 下不支援 name
屬性。這不是一個大問題,因為大多數使用者使用 Chrome 和 Firefox 等現代瀏覽器。
Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.
LinkedIn