Javascript propertyIsNumerable-是否有可枚举的方法

Javascript propertyIsEnumerable - Is there any method that is enumerable?

本文关键字:枚举 方法 propertyIsNumerable- 是否 Javascript      更新时间:2024-04-21

看完这篇文章后,我有几个问题:hasOwnProperty与propertyIsNumerable

我可以说一个对象中的所有方法都是不可枚举的吗?如果没有,你能举一个可枚举的方法的例子吗?如何创建可枚举方法?

默认情况下,添加到对象或其原型链的所有方法都是可枚举的。如果您查看任何调试工具,如firebug或webkit检查器,您会注意到一些属性不会显示在任何for in循环中。

这些属性例如是prototype__proto__isPrototypeOf等等。

看完这篇文章后,我有几个问题:hasOwnProperty与propertyIsNumerable

你似乎只读过这个问题:-)

我可以说一个对象中的所有方法都是不可枚举的吗?

首先,JavaScript中没有"方法"。一个对象可以有一个作为函数的属性。或者它可以从其原型对象继承一个。

如果没有,你能举一个可枚举的方法的例子吗?

如果你从链接的问题中获取示例函数,并在一个实例上循环,你将获得所有可枚举的属性,包括继承的和直接的:

> for (var prop in new f) console.log(prop)
a
b
c
d
e
g

它没有记录从Object.prototype继承的不可计数的属性,如toStringisPrototypeOf

那么为什么isEnumberable返回false呢?答案很好地解释了这一点:函数只考虑自己的属性,而不考虑从原型继承的属性。

如何创建可枚举方法?

问题应该是"如何创建枚举方法?"。对于该任务,请使用Object.defineProperty

默认情况下,通过简单赋值创建的每个其他属性都是可枚举的。这既适用于普通属性,也适用于从其原型继承的属性。