Node.js 是一門非常流行的後端程式語言,可以用它來編寫 Web 應用程式、網頁伺服器、命令列應用程式等。在 Node.js 中,我們常常需要透過分析傳遞進來的物件來取得它的一些屬性或方法,因此拿到物件名稱也是很重要的一件事。接下來本文將會介紹如何拿到物件名稱的幾種方法。
在 JavaScript 中,使用 typeof 關鍵字可以取得一個變數的類型,對於物件也不例外。我們可以使用 typeof 運算子來判斷某個物件是不是一個物件類型,如果是,我們可以使用它的 toString 方法來取得該物件的名稱。
var obj = {name:'Node.js'}; console.log(typeof obj); // 输出 "object" console.log(obj.toString()); // 输出 "[object Object]"
從上面的程式碼可以看出,使用 typeof 運算子判斷 obj 的型別為 object,obj 所屬的類別名稱是 Object,因此它的輸出結果是 "[object Object]"。
除了直接使用 typeof 關鍵字判斷物件類型外,我們還可以透過包裝一層函數的方式,來封裝取得物件名稱的過程,使程式碼更加易讀和簡潔。
function getObjectName(obj) { return Object.prototype.toString.call(obj).slice(8, -1); } var obj = {name:'Node.js'}; console.log(getObjectName(obj)); //输出 "Object"
上面的getObjectName 函數封裝了取得物件名稱的過程,我們傳遞一個物件obj 給它,它先透過Object.prototype.toString.call(obj) 取得obj 所屬的類別名,然後透過slice方法取得類別名稱字串的子字串,也就是得到我們要的物件名稱。
在JavaScript 中,每個函數都有一個constructor 屬性,透過它可以取得到該函數的建構函數,所以我們可以透過物件的constructor 屬性來取得該物件的名稱。下面是一個例子:
function Person(name, age) { this.name = name; this.age = age; } var p = new Person('Tom', 18); console.log(p.constructor.name); // 输出 "Person"
在上面的程式碼中,我們定義了一個Person 函數,然後透過new 關鍵字建立了一個物件p,然後我們可以透過p.constructor.name 取得到該物件的建構函式名稱,也就是"Person"。
使用 constructor 屬性來取得物件名稱的方式非常簡單,但要注意的是,這種方式只適用於透過建構函式建立的對象,對於一般物件則無效。
Object.keys() 方法可以取得一個物件自身屬性的名字,如果我們已經知道了一個物件的屬性名,那麼透過屬性名即可取得該物件的屬性的值,從而得到物件名稱。例如:
var obj = { name: "Tom", age: 18 }; var propName = Object.keys(obj)[0]; console.log(propName); // 输出 "name" console.log(obj[propName]); // 输出 "Tom"
在上面的程式碼中,我們先使用Object.keys() 方法取得到obj 物件的屬性名稱數組,然後我們透過數組下標來取得第一個屬性的名稱(即" name"),然後再透過obj["name"] 來取得該屬性的值(即"Tom")。
要注意的是,這種方法只適用於物件只有一個屬性時,如果物件有多個屬性,則無法準確地取得物件名稱。
Object.prototype.toString() 方法可以傳回一個物件的字串表示,具體方法和typeof 運算子取得物件名稱的方式類似,我們同樣可以透過它來取得一個物件的名稱。
var obj = {name: "Node.js"}; console.log(Object.prototype.toString.call(obj)); // 输出 "[object Object]"
在上面的程式碼中,我們透過 Object.prototype.toString.call(obj) 取得到該物件的字串表示,然後我們可以從字串中解析出該物件的名稱。
要注意的是,這種方法同樣只適用於物件只有一個屬性時。
在Node.js 程式設計中,我們常常需要取得物件的名稱,本文介紹了四種常用的方法來取得物件名稱,它們分別是:
需要根據具體情況選擇合適的方法,以達到最佳的使用效果。希望本文對您有幫助。
以上是nodejs怎麼拿到物件名的詳細內容。更多資訊請關注PHP中文網其他相關文章!