2009-10-06 8 views
3

comment boucle par fonctions JavaScript membres Array, le code suivant ne fonctionne pas :(JavaScript réflexion Array

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

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

Répondre

7

Aucun des propriétés prototypal natives sont énumérables, mais vous pouvez trouver exactement ce que vous cherchez dans la spécification ECMA:

http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf

vous ne pouvez énumérer e propriétés brutes que vous avez définie, par exemple:

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

x = {}; 

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

alerterait:

foo

Une autre astuce utile est que vous pouvez utiliser object.hasOwnProperty(property) dans une for..in loop à la branche que si l'objet directement possède une propriété, et la propriété ne descend pas du prototype du constructeur, dont tous les objets descendent à peu près de Object.prototype.

3

Vous boucle ne peut pas par des méthodes natives.