栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

您可以

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及更低版本)中,内置对象的属性不可枚举。像

window
document
不是内置的对象,它们是由浏览器定义的,很可能是通过设计枚举的。

从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
循环时将跳过它。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/432302.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号