6
votes

Obtenir la liste des méthodes dans le tableau JavaScript

var c=$('<canvas></canvas>')[0].getContext('2d')
for(m in c){console.log(m)}
This prints a list of methods in CanvasRenderingContext2D. How can I do the same for an Array. I want to get "splice", "pop", "push", etc. Obviously for(m in Array.prototype){console.log(m)} won't work.

0 commentaires

3 Réponses :


14
votes

la plupart des méthodes et des propriétés d'objets intégrés sont marqués en interne comme non énumérable, ils ne seront donc pas énumérés dans une boucle ECMAScript 5 a un objet.getownPropertyNames méthode qui renvoie une matrice de tous les noms de propriété, de sorte que Vous pouvez faire: xxx

mais ce n'est pas encore pris en charge par tous les navigateurs.


0 commentaires

1
votes

Je n'ai aucune idée de la façon de le faire avec une JS plaine. J'ai généralement des sous-vasques chargées de la fourmi chargées, il a une fonction qui renvoie toutes les fonctions d'un objet

http://documentcloud.github.com/underscore/#Functions

Vous pouvez vérifier le code de soussecorejs pour vérifier comment ils le font.


0 commentaires

2
votes

Faites ceci: xxx

sortie: xxx


6 commentaires

Ce n'est pas la même chose que d'obtenir les propriétés sur une instance de tableau / prototype, ce qui n'est pas insuffisant. C'est une coïncidence que de nombreuses propriétés Array.x sont nommées identiques telles que array.pototype.x propriétés.


Où avez-vous obtenu cette sortie de toute façon? Cela ne fonctionne pas pour moi sur FF4. La seule propriété standard de est array.isarray et qui est à nouveau non énumérable.


Vous voudrez peut-être ajouter un si (type de m === 'fonction') à cela, donc vous n'obtenez que des fonctions.


Ne fonctionne pas pour moi sur Chrome, IE8, FF 3.6. Je n'ai aucune idée de la façon dont vous avez cette sortie. Le constructeur Array n'a pas de propriétés autant que je puisse tester.


J'utilise Chrome 9.0.597.10 Dev.


Cela a travaillé pour moi à Chrome, IE8, Safari, FF3, Opéra. Et si vous utilisez HABALPROPERTY , vous devriez pouvoir séparer les propres accessoires de l'inhéatence prototypale et de la matrice. Jsfiddle.net/b4nyz