在JavaScript中,为什么';t表示返回Object.prototype的内容?
我用一个。。。in循环将返回对象的所有属性,包括来自其原型链的属性,并且使用.keys()将给我一个非inher数组(基本上是for…in与hasOwnProperty结合使用),但是为什么for。。。在循环中包括从对象引入的东西?i、 为什么不为。。是否包含来自对象的toString函数?谢谢 对象的属性由其键、值以及是否可配置、可枚举和可写来定义。不可枚举属性不会显示在for循环中 当像这样创建对象属性时在JavaScript中,为什么';t表示返回Object.prototype的内容?,javascript,node.js,prototype,Javascript,Node.js,Prototype,我用一个。。。in循环将返回对象的所有属性,包括来自其原型链的属性,并且使用.keys()将给我一个非inher数组(基本上是for…in与hasOwnProperty结合使用),但是为什么for。。。在循环中包括从对象引入的东西?i、 为什么不为。。是否包含来自对象的toString函数?谢谢 对象的属性由其键、值以及是否可配置、可枚举和可写来定义。不可枚举属性不会显示在for循环中 当像这样创建对象属性时 var myObject = {}; myObject["a"] = 3; 默认情况
var myObject = {};
myObject["a"] = 3;
默认情况下,它是可配置、可枚举和可写的。它将在for循环中显示。可以使用Object.defineProperty
创建不可枚举的属性。您可以使用检查属性是否可枚举。propertyIsEnumerable
:
myObject.propertyIsEnumerable("a"); // --> true
Object.propertyIsEnumerable("toString"); // --> false
for…in语句以任意顺序迭代对象的可枚举属性--for..in循环仅迭代对象的可枚举属性。您可以使用检查该设置。这非常有意义。我没有意识到对象的属性被定义为不可枚举。谢谢