当前位置: 首页 > 面试题库 >

如何显示对象的所有方法?

慎望
2023-03-14
问题内容

我想知道如何列出对象可用的所有方法,例如:

 alert(show_all_methods(Math));

这应该打印:

abs, acos, asin, atan, atan2, ceil, cos, exp, floor, log, max, min, pow, random,round, sin, sqrt, tan, …

问题答案:

您可以Object.getOwnPropertyNames()用来获取属于某个对象的所有属性(无论是否可枚举)。例如:

console.log(Object.getOwnPropertyNames(Math));
//-> ["E", "LN10", "LN2", "LOG2E", "LOG10E", "PI", ...etc ]

然后,您可以使用filter()来仅获取方法:

console.log(Object.getOwnPropertyNames(Math).filter(function (p) {
    return typeof Math[p] === 'function';
}));
//-> ["random", "abs", "acos", "asin", "atan", "ceil", "cos", "exp", ...etc ]

在ES3浏览器(IE8及更低版本)中,内置对象的属性不可枚举。像windowdocument不是内置的对象,它们是由浏览器定义的,很可能是通过设计枚举的。

从ECMA-262第3版开始:

全局对象
有一个唯一的全局对象(15.1),它在控制进入任何执行上下文之前创建。最初,全局对象具有以下属性:

•内置对象,例如Math,String,Date,parseInt等。 这些对象具有属性{DontEnum}
•其他主机定义的属性。这可能包括其值为全局对象本身的属性;例如,在HTML文档对象模型中,全局对象的window属性是全局对象本身。

当控件进入执行上下文时,并且在执行ECMAScript代码时,可以将其他属性添加到全局对象,并且可以更改初始属性。

我应该指出,这意味着这些对象不是Global对象的不可枚举的属性。如果仔细阅读规范文档的其余部分,您将看到这些对象的大多数内置属性和方法{DontEnum }在其上设置了属性。

更新:一位SO用户CMS带来了一个引起我注意的IE错误{ DontEnum}

[Microsoft] JScript不会检查DontEnum属性,而是跳过对象原型链中具有属性DontEnum的同名属性的任何对象中的任何属性。

简而言之,在命名对象属性时要当心。如果存在具有相同名称的内置原型属性或方法,则IE在使用for...in循环时将跳过它。



 类似资料:
  • 我试图显示一个对象中的所有值,但它给了我“必须声明”错误。 我尝试了下面的代码,但仍然出现相同的错误。 而我的对象是: 错误: 错误报告-ORA-06550:第5行,第38列:PLS-00302:组件'ID'必须声明ORA-06550:第5行,第7列:PL/SQL:语句忽略ORA-06550:第6行,第38列:PLS-00302:组件'G'必须声明ORA-06550:第6行,第7列:PL/SQL:

  • 我编写了一个代码,从txt文件中提取一行,将其拆分为不同的字符串和整数,然后将其存储到数组列表中,作为一个名为Professor的对象。主类的代码为: 问题是如何在控制台中显示arraylist?以及如何访问ArrayList中的一个对象中的字符串? 提前致谢

  • 我创建了Person类,它由类的Student和Employee扩展(由其他Employee类型的类扩展)。person类如下所示: 我目前正在尝试创建一个方法,它将显示所有的人,如果他们是gender=“male”。我有: 我不确定如何引用方法中的对象(学生和雇员,它们都是persons)来返回它们。而我也不知道在主法中如何引用这个方法。我不能用个人打印,但如果我用 然后使用 我只是返回jame

  • 我是JProfiler的新手。我创建了一个非常简单的测试应用程序。这是一个带有main方法的Main.java: 注意,我暂停直到按键。通过这种方式,我确信主作用域在我按下一个键之前不会结束,所以我希望e存在并且不会被垃圾收集(如果这个假设不正确,请纠正我)。示例类: 我使用JProfiler Eclipse插件启动上述应用程序。我创建了一个基于完整仪器配置文件的会话;我已经删除了Java EE和

  • 我有一个程序,它有一个超级类,个人和子类,学生,并试图根据他们的生日和名字来比较他们什么时候是平等的。我做对了,但是在我试图解决的提示下,我得到了一个错误,自动评分器是:“测试学生和学生是一样的,即使成绩不同”,预期结果是真的,但我总是得到错误。这个程序在比较人和学生时起作用,在比较人和人时起作用,而不是学生和学生,我不知道为什么。 主要类别: 超类: 子类:

  • 问题内容: 我经常被要求解决struts.xml配置错误。现在,在更新到更高版本的Struts2之后,我自己遇到了这种不匹配的情况。导致以下错误: 好吧,我猜是可以解决的。但是,有没有一种聪明的方法来html打印所有可用的URL路径? 感谢这个社区的猜测 问题答案: 您可以使用config-browser插件来实现。检查参考文档。该插件的功能之一是 显示所有可访问的操作URL