2009-07-20 11 views
1

Je migre un code ASP vers .net. Je suis tombé sur le code suivant, mais je ne sais pas ce qu'il fait.Qu'est-ce que ["null"] en javascript?

var collection = {}; 
if (typeof(collection["null"]) != "undefined" && 
    typeof(collection["null"][id]) != "undefined") 

Tout puits peut-il indiquer ce que fait la collection ["null"]? Si possible, comment définir en .Net

Juste pour vous donner une idée, je me suis closedMealArea comme une liste en .Net

Merci à l'avance

Cheers, wildanjel

Répondre

2

En JavaScript , collection ["null"] renvoie la propriété avec le nom "null" appartenant à la collection d'objets. collection.null est équivalent à collection ["null"].

+0

dangereuse utilisation du mot "propriété" là. Tout en js est effectivement un hashmap. Oui, il pourrait s'agir d'une "propriété" d'un objet, mais il pourrait aussi s'agir d'un indexeur de tableau –

+2

Dans JS, les index de chaîne sont des propriétés. Les "tableaux" avec des index de chaînes sont en fait des objets. –

+1

"collection.null est équivalent à collection [" null "]." sauf que je ne crois pas collection.null est javascript valide. – Breton

0

C'est juste un élément de tableau.

2

Tout ce qui précède est correct, d'une certaine façon. Javascript utilise deux manières différentes d'accéder aux propriétés/méthodes sur un objet, ou des éléments dans ce qui est effectivement sa version d'un tableau associatif. Comme mentionné par Soubok, ils sont object['propOrMethodName'] et object.propOrMethodName. Ils sont équivalents.

Même un tableau standard, avec des indices entiers, peut avoir des propriétés/méthodes nommées. Javascript ne fait vraiment aucune distinction dans l'ensemble. Ce que vous ne pouvez pas faire, cependant, est nonArrayObject[n] ou arrayObject.n où n est un nombre entier.

Dans le cas de la question, cependant, collection est explicitement un objet:

var collection = {}; 

Un tableau, avec des indices entiers, seraient ainsi déclaré:

var collection = []; 

Comme les derniers tests de déclaration collection["null"][n] (en supposant que n est à nouveau un entier), je dirais que la collection est destinée à avoir une série de propriétés, dont chacune est un tableau. L'une de ces propriétés est nommée "null".

+0

En fait, oui, vous pouvez faire: var obj = {}; obj [3] = 42; –

+0

Oops, oui, mon mauvais. Le gotcha là est que vous avez un objet non-array avec une propriété nommée "3", mais vous ne pouvez pas utiliser obj.3 pour y accéder et obj.length === undefined. Cependant, obj [3] et obj ['3'] donnent tous deux la bonne valeur. –

Questions connexes