8
votes

Valeur de la propriété d'un objet de chaîne en JavaScript

Autant que je sache, chaque chaîne est un objet en JavaScript. Néanmoins, il "ne fonctionne pas" car je m'attends à ce que ce soit: xxx

Cependant, si j'essaie de définir une chaîne de la "mauvaise manière", tout fonctionne comme prévu xxx

pourquoi est-ce?


0 commentaires

3 Réponses :


8
votes

Vous êtes peut-être intéressé à vérifier la première partie de cet article:

  • La référence complète JavaScript Strings Référence

    citant:

    Il existe deux types différents de cordes et le comportement de manière assez différente. Un littéral est créé simplement en utilisant des citations autour de votre chaîne. Un objet est créé par une utilisation implicite du nouveau mot-clé. Si vous attribuez une chaîne à une variable à l'aide du mot clé String, sans le nouveau mot-clé, le contenu de la parenthèse sera lancé comme littéral à chaîne.

    Un littéral à chaîne a accès à toutes les objets et méthodes d'une chaîne, car JavaScript lancera temporairement une chaîne littérale comme objet à chaîne afin d'exécuter la méthode souhaitée.

    où les deux différentes sont leur traitement de nouvelles propriétés et méthodes. Comme tous les objets JavaScript, vous pouvez affecter des propriétés et des méthodes à n'importe quel objet de chaîne.

    Vous ne pouvez pas ajouter de propriétés ou de méthodes à un littéral à chaîne. Ils sont ignorés par l'interprète.

    La raison pour laquelle vous ne pouvez pas ajouter de propriétés ou de méthodes à un littéral à chaîne est que lorsque vous essayez d'accéder à une propriété ou à une méthode d'un littéral, l'interpréteur JavaScript copie temporairement la valeur de la chaîne dans un nouvel objet, puis utilisez les propriétés de ce objet. ou des méthodes. Cela signifie qu'un littéral à chaîne ne peut accéder que les propriétés ou les méthodes par défaut d'une chaîne et celles qui ont été ajoutées en tant que prototypes.


1 commentaires

Obtenu, merci - "La raison pour laquelle vous ne pouvez pas ajouter de propriétés ou de méthodes à un littéral à chaîne est que lorsque vous essayez d'accéder à une propriété ou à la méthode d'un littéral, l'interprète JavaScript copie temporairement la valeur de la chaîne dans un nouvel objet, puis utilisez propriétés ou méthodes de cet objet. " ;-)



0
votes

Ceci est également une lecture intéressante ... Les objets de littoraux ou non?


0 commentaires

5
votes

Cela se produit parce que le Accessoires de propriété , ( . et [] ) Convertissez la valeur TOObject .

Quelque chose équivalent à cela se produit dans les coulisses: xxx

essentiellement un objet est créé à la volée, par l'accesseur de propriété, voir l'étape 5 :

la production mémorexpression : mémorèxpression [expression] (ou mémorexpression. Identificateur ) est évalué comme suit:

  1. évaluer mémorexpression .

  2. appel getvalue (résultat (1)) .

  3. évaluer l'expression.

  4. appel getvalue (résultat (3)) .

  5. appel tooObject (résultat (2)) .

  6. appel tostring (résultat (4)) .

  7. Renvoie une valeur de référence de type dont l'objet de base est le résultat (5) et dont le nom de propriété est résultat (6)


0 commentaires