Javascript propertyIsNumerable-是否有可枚举的方法
Javascript propertyIsEnumerable - Is there any method that is enumerable?
看完这篇文章后,我有几个问题: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
继承的不可计数的属性,如toString
或isPrototypeOf
。
那么为什么isEnumberable
返回false呢?答案很好地解释了这一点:函数只考虑自己的属性,而不考虑从原型继承的属性。
如何创建可枚举方法?
问题应该是"如何创建非枚举方法?"。对于该任务,请使用Object.defineProperty
。
默认情况下,通过简单赋值创建的每个其他属性都是可枚举的。这既适用于普通属性,也适用于从其原型继承的属性。
相关文章:
- 如何发送分配列表<字符串>到JavaScript数组或可枚举对象
- 枚举附加到文档的HTML对象的所有事件
- JavaScript数组的子类化破坏了快速枚举
- 为什么Javascript程序员更喜欢在代码中重复字符串作为常量,而不是使用枚举类型的对象
- 不可枚举的属性出现在 for..在 Chrome 中循环
- json模式v4如何根据枚举实现枚举
- 如何访问从 jstl foreach 到 jQuery 的枚举值
- 如何从 Javascript 访问 Java 枚举 (Java 1.8)
- JSON.stringify未序列化可枚举属性
- 为什么ES6 WeakMap's不可枚举
- 如何在另一个对象中枚举一个对象
- Javascript propertyIsNumerable-是否有可枚举的方法
- 遍历所有不可枚举属性的任意方法
- 在默认情况下将可枚举设置为 false 的 JS 中创建对象属性的其他方法是什么
- 有没有一种方法可以在谷歌闭包编译器中使用枚举作为类型
- 如何在不使用Object.defineProperty的情况下定义一个非枚举方法
- 是否有一种方法来连接值(如枚举)从前端(JS)到后端(PHP/Ruby)没有重复
- 在JScript中:我可以枚举通过新ActiveXObject()创建的对象上的方法
- 是否有一种方法可以使枚举在整个meanjs堆栈中可用?
- 如何遍历JavaScript伪类中的所有方法,而不管它们是否标记为可枚举的