在 JavaScript 中,有沒有辦法列印物件的所有方法?


在本教程中,我們將學習如何在 JavaScript 中列印物件的所有方法。

物件中帶有函式宣告的屬性稱為 JavaScript 方法。方法表示為物件屬性和函式。我們將對物件執行的操作稱為 JavaScript 方法。

也可以在不使用括號的情況下呼叫物件。這指的是方法的所有者物件。該方法操作屬於類的部分資料。呼叫到方法中的物件被隱式傳遞。與物件屬性關聯的函式稱為方法。方法由一段程式碼組成,可以使用點表示法或方括號表示法以及其物件和方法名稱進行呼叫。

以下是用於在 JavaScript 中列印物件所有方法的方法。

使用 Object.getOwnPropertyNames() 方法

Object.getOwnPropertyNames() 函式返回一個包含特定物件中可以直接找到的所有屬性的陣列。Object.getOwnPropertyNames() 函式提供一個字串陣列,表示可以在物件 obj 中直接找到的可列舉和不可列舉屬性。

for-in 迴圈排序揭示了(或透過 Object.keys())跨物件的屬性,這與陣列中可列舉屬性的排序一致。物件的非負整數鍵(不可列舉和可列舉)首先按升序新增到陣列中,然後是插入順序的字串鍵。

語法

Object.getOwnPropertyNames(obj).filter(function (p) {
   return typeof obj[p] === 'function';
}

Object.getOwnPropertyNames() 返回屬於物件 obj 的所有屬性。它返回程式中物件的屬性。

示例 1

在下面的示例中,我們列印物件的所有方法。首先,我們建立了一個帶有兩個方法 myMethod1 和 myMethod2 的物件 obj。我們應用上述語法來列印所有方法。

<html> <body> <h3>Print all methods of an object using <i>Object.getOwnPropertyNames()</i></h3> </body> <script> var obj = { name : 'John', age : 32, myMethod1: function(age) { return age}, myMethod2: function(name) {return name} } document.write("obj methods:"); document.write("<br>" + Object.getOwnPropertyNames(obj).filter(function(p) { return typeof obj[p] === 'function'; })); </script> </html>

示例 2

在此示例中,準備了兩個物件。一個是 Math 物件,另一個是 Array。Object.getOwnPropertyNames() 將返回 Math 和 Array 物件的方法。輸出中顯示了這些方法。

<html> <body> <h2>Print all methods of an object using <i>Object.getOwnPropertyNames()</i></h2> </body> <script> document.write("Math methods:"); document.write("<br>" + Object.getOwnPropertyNames(Math).filter(function(p) { return typeof Math[p] === 'function'; })); document.write("<br>"); document.write("Array methods:"); document.write("<br>" + Object.getOwnPropertyNames(Array).filter(function(q) { return typeof Array[q] === 'function'; })); </script> </html>

使用 typeof 運算子方法

任務是從包含一些方法的 HTML 文件中獲取所有物件的方法。在這裡,我們構造一個接受物件作為引數的函式。使用 typeof 運算子來確定物件是否為函式。如果物件的型別是函式,則返回該物件。這確定是否發生了錯誤,以及如果發生了錯誤,如何正確地解決它。

語法

function getAllMethods(obj = this) {
   return Object.keys(obj)
      .filter((key) => typeof obj[key] === 'function')
         .map((key) => obj[key]);
}

該物件返回函式的屬性並返回物件的 method。

示例

在此示例中,我們使用了 jQuery。建立了兩個使用者定義的方法,並且 typeof 運算子檢測物件是否為函式。filter() 方法用於從給定陣列構建一個新陣列,該陣列僅包含滿足引數方法指定條件的原始陣列的專案。Map 物件儲存鍵值對並跟蹤鍵的初始插入順序。這檢查 typeof Object 是否為函式,並將它的值返回到使用者的螢幕上。

<html> <head> <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"> </script> </head> <body style = "text-align:center;"> <h2>Print all methods of an object using <i>typeof</i> operator</h2> <p id = "root1" style = "font-size: 15px; font-weight: bold;"></p> <button onclick = "execute()"> Click Here </button> <p id = "root2" style = "color:back"></p> <script> var level1 = document.getElementById("root1"); var level2 = document.getElementById("root2"); level1.innerHTML = "Click on the button to get " + " all methods of any Object."; function Obj() { this.a1 = function newFunc1() { return "From new function1"; } this.a2 = function newFunc2() { return "From new function2"; } } function getAllMethods(obj = this) { return Object.keys(obj) .filter((key) => typeof obj[key] === 'function') .map((key) => obj[key]); } function execute() { level2.innerHTML = getAllMethods(new Obj()); } </script> </body> </html>

在本教程中,我們討論了兩種在 JavaScript 中列印物件所有方法的不同方法。第一種方法使用 Object.getOwnPropertyNames()。第二種方法使用 typeof 運算子來檢查物件是否為函式。

更新於: 2022 年 10 月 31 日

921 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告