有沒有辦法在 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]); }
該物件返回函式的屬性並返回物件的屬性。
示例
在這個示例中,我們使用了 jQuery。建立了兩個使用者定義的方法,typeof 運算子檢測物件是否是函式。filter() 方法用於從給定陣列中構建一個新陣列,該陣列僅包含滿足引數方法指定的條件的原始陣列的項。Map 物件儲存鍵值對並跟蹤鍵的初始插入順序。這檢查 typeof 物件是否是函式,並將它的值返回給使用者的螢幕。
<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 運算子檢查物件是否是函式。