根据规定,所有开发人员定义的属性都是可枚举的该如何理解?

高程书p153页有这样一段话
在使用for-in循环时,返回的是所有能够通过对象访问的、可枚举的属性,既包括实例中的属性又包括原型对象中的属性;
屏蔽了原型中不可枚举属性(即将[[Enumerable]]设置为false的属性)也会在for-in循环中返回,因为根据规定,所有开发人员定义的属性都是可枚举的---只有IE8即更早版本中例外

问题一:根据规定,所有开发人员定义的属性都是可枚举的该如何理解?

我在百度中搜索for…in是否可以返回不可枚举的属性时 看到的大部分关键句子如下
for in循环可以遍历对象中所有可以枚举的属性,包括自有属性和继承属性。

问题二:那么这里的可枚举是不是指所有用户自定义属性而不是说enumerable特性设置为true的属性?
是不是就算用户将enumerable特性设置为false仍然是可枚举属性?


四季花海
浏览 464回答 1
1回答

守着一只汪

问题1:只是说明用户自定义的属性默认都是可枚举的 也就是说你不做任何特性设置时 你可以吧它循环出来问题2:系统默认可枚举你改成了不可枚举当然就不可枚举了因为你写了个属性还得手动设置可枚举会很奇怪 所以规定开发任用定义的默认可枚举而你自己定义的属性你都设置了不可枚举了 还可枚举那也很奇怪只是一个默认值问题
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript