Y a-t-il des pièges à coder comme ça? Notez que je crée un nouvel objet fonction avec quelques propriétés misc, puis je traite l'objet comme un tableau. De même, comment les valeurs du tableau sont-elles stockées dans l'objet? Est-ce que 0 et 1 sont traités comme des noms de propriété?JavaScript: Utiliser l'objet comme tableau
Répondre
Eh bien, oui, 0
, et 1
seront juste deux noms de propriété.
Lorsque vous affectez une propriété avec la notation entre crochets, l'expression entre les parenthèses sera convertie en chaîne et cette chaîne sera utilisée comme nom de propriété.
En fait, même les indices pour tableaux réels ne sont que des propriétés:
var realArray = ['a'];
realArray.hasOwnProperty('0'); // true
La différence est que tableau réel objets sur chaque affectation de propriété correspondant à un indice valide[1], de suivre en interne la valeur de leur propriété length
.
C'est l'une des raisons pour lesquelles les objets du tableau « sous-classement » est difficile, even with the new ECMAScript 5 extensions, ou au moment aussi avec le projet ECMAScript-Harmony Proxies23, ne peut pas être complètement fait, d'une manière stanard.
Cela peut être un problème, en fonction de la façon dont vous envisagez itérer les propriétés numériques.
Si vous énumérez les propriétés avec l'instruction for-in
, les autres membres apparaîtront, pas seulement les propriétés numériques. [1] Un index de tableau valide est un nombre entier non signé de 32 bits compris entre 0 et (2^32) -1.
Je suis un peu surpris. Cela signifie qu'il n'y a pas de véritables tableaux en Javascript. Seulement un objet avec quelques fonctions de type tableau boulonné. – mellowsoon
@mellowsoon: C'est tout à fait vrai. Tous les objets JavaScript, y compris les tableaux, sont juste une collection de propriétés. – casablanca
@mellowsoon, exactement, les tableaux sont simplement des objets qui ont une méthode interne ['\ [\ [DefineOwnProperty \] \]'] (http://ecma262-5.com/els5_html#Section_15.4.5.1) spéciale , (entre autres quelques caractéristiques particulières). Cette méthode interne est utilisée lorsque vous faites une assignation de propriété, et elle prend soin de suivre et de calculer la valeur de la propriété 'length'. – CMS
Je pense que vous pourriez avoir des problèmes si vous essayez de boucler cela avec une boucle for in
; la boucle obtiendra également bar
. Il y a des façons de contourner cela, il faut donc faire attention.
Si vous souhaitez étendre behavious Array s'il vous plaît utiliser: Array.prototype.yourfunc = function()....
- 1. créer tableau jquery à utiliser comme options
- 2. Puis-je utiliser stdClass comme un tableau?
- 3. Utiliser un tableau comme variables jQuery POST?
- 4. Utiliser php comme javascript externe avec CakePHP?
- 5. utiliser le tableau php en javascript?
- 6. Utiliser la classe d'éléments actuelle comme nom de tableau?
- 7. Javascript utilisant une variable comme nom de tableau
- 8. Comment utiliser un tableau comme attribut d'objet en Perl?
- 9. Comment puis-je utiliser ces données JSON comme tableau
- 10. Django: utiliser les variables comme indices de tableau?
- 11. PHP $ _REQUEST comme tableau
- 12. winforms menu comme tableau
- 13. Rails + PostgreSQL -Utiliser Comme
- 14. représente un tableau 2D comme tableau 1D
- 15. tableau JavaScript référence
- 16. Référence dynamique du nom de tableau Javascript sans utiliser Eval?
- 17. Comment utiliser une valeur de tableau de php à javascript?
- 18. Quand utiliser un objet ou un tableau en javascript?
- 19. objet PHP comme tableau
- 20. Condensing un tableau Javascript
- 21. javascript php tableau
- 22. Javascript: Chaque tableau
- 23. tableau multidimensionnel Javascript délivre
- 24. Javascript Canvas Element - tableau d'images
- 25. Tableau JavaScript vers ColdFusion
- 26. retourner un tableau associatif php javascript tableau
- 27. Utiliser iframe comme lien?
- 28. javascript remplacer globalement avec tableau
- 29. Javascript Span comme variable PHP
- 30. VBScript Tableaux associatifs anonymes? (Comme en Javascript)
Tant que vous ne disposez pas d'une longueur propriété ne confondra votre objet avec un tableau. – some