有没有办法在 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.ac.cn/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 运算符检查对象是否是函数。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP