Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组中…的JavaScript遍历不可数属性_Javascript - Fatal编程技术网

数组中…的JavaScript遍历不可数属性

数组中…的JavaScript遍历不可数属性,javascript,Javascript,根据和各种其他来源,for…in仅迭代可枚举属性。通过enumerable,我假设那些返回false的属性是enumerable()。尽管如此,第页上的以下代码 var TstArr=[0]; 用于(TstArr中的var A){ console.log(“In”,TstArr.propertyEnumerable(A),TstArr[A]); };会测试对象的自己的属性是否可枚举。如果对象没有具有该名称的自己的属性,则返回false 鉴于这些枚举属性是从TstArrays原型继承的,您需要调

根据和各种其他来源,
for…in
仅迭代可枚举属性。通过enumerable,我假设那些返回
false
的属性是enumerable()。尽管如此,第页上的以下代码

var TstArr=[0];
用于(TstArr中的var A){
console.log(“In”,TstArr.propertyEnumerable(A),TstArr[A]);
};会测试对象的自己的属性是否可枚举。如果对象没有具有该名称的自己的属性,则返回
false

鉴于这些枚举属性是从
TstArray
s原型继承的,您需要调用该对象上的方法:

for (var p in TstArr) {
    console.log(p, Object.getPrototypeOf(TstArr).propertyIsEnumerable(p));
}

我甚至不知道这个方法的存在:-/出于好奇,MDN有关于和的全部细节。@Michael Geary阅读了这两页,第一页是在提问之前,第二页是在早些时候。看起来他们没有很好地概述支票的所有权要求。或者这可能是我的阅读技能。@FelixKling:这是一种可怕的
Object
方法,通常需要使用
Object.prototype…..调用
,以捕获所有边缘情况。@Zero下划线EOU:最开始:“此方法可以确定对象中的指定属性是否可以由for…in循环枚举,但通过原型链继承的属性除外。如果对象没有指定的属性,此方法将返回false。“如果您正在使用Prototype.js库,您应该在问题中标记它。它扩展了Array.prototype,后者的内置方法不可枚举。对我来说,结果是
为真0
@RobG Prototype用于该页面,但我没有在我有疑问的部分使用它。它的原型方法是我的猜测。当然,但它解释了为什么这些方法会出现。运行您的代码片段不会产生您所说的结果,它会返回我所期望的结果。注意到Prototype.js包含在页面中,这会有所帮助。