我知道使用for ... in循环将返回一个对象的所有属性,包括来自其原型链的那些属性,并且使用.keys()会给我一个非继承数组(基本上用于...与hasOwnProperty结合使用)但为什么在循环中没有包含从Object中引入的东西?即为什么不包含来自Object的toString函数?谢谢!
答案 0 :(得分:2)
对象的属性由其键,值以及它是可配置的,可枚举的,可写的来定义。 for enumerable属性不会出现在for循环中。
当像这样创建对象属性时
select()
默认情况下,它是可配置的,可枚举的和可写的。它会出现在循环中。可以使用var myObject = {};
myObject["a"] = 3;
创建不可枚举的属性。您可以使用Object.defineProperty
检查属性是否可枚举:
.propertyIsEnumerable