Отражение массива JavaScript - PullRequest
3 голосов
/ 06 октября 2009

Как перебрать функции-члены массива JavaScript, следующий код не работает: (

for (var i in Array.prototype){
    alert(i)
} //show nothing 

for (var i in []){
   alert(i)
} // show nothing

Ответы [ 2 ]

7 голосов
/ 06 октября 2009

Ни одно из собственных свойств прототипа не перечисляемо, но вы можете точно узнать, что вы ищете в спецификации ECMA:

http://www.ecma -international.org / публикации / файлы / ECMA-ST / ECMA-262.pdf

Вы можете перечислять только те свойства, которые вы определили, например:

Object.prototype.foo = function(){};

x = {};

for ( var prop in x ) {
    alert( prop );
}

предупредит:

Foo

Еще один полезный совет: вы можете использовать object.hasOwnProperty( property ) внутри for..in loop для ветвления, только если объект непосредственно владеет свойством и свойство не происходит от прототипа конструктора, из которого все объекты в значительной степени происходят от Object.prototype.

3 голосов
/ 06 октября 2009

Нельзя пройти через нативные методы.

...