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: Cependant, si j'essaie de définir une chaîne de la "mauvaise manière", tout fonctionne comme prévu p> pourquoi est-ce? p> p>
3 Réponses :
Vous êtes peut-être intéressé à vérifier la première partie de cet article: p>
citant: p>
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. P>
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. P>
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. P>
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. P>
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. P> blockQuote>
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. " ;-)
Ceci est également une lecture intéressante ... Les objets de littoraux ou non? a> p>
Cela se produit parce que le Accessoires de propriété , ( Quelque chose équivalent à cela se produit dans les coulisses: p> essentiellement un objet est créé à la volée, par l'accesseur de propriété, voir l'étape 5 : p> la production évaluer appel évaluer l'expression. p> li>
appel appel appel 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 . code> et [] code>) Convertissez la valeur TOObject . mémorexpression code>: mémorèxpression [expression] code> (ou mémorexpression. Identificateur code>) est évalué comme suit: p>
mémorexpression code>. p> li>
getvalue (résultat (1)) code>. p> li>
getvalue (résultat (3)) code>. p> li>
tooObject (résultat (2)) code>. p> li>
tostring (résultat (4)) code>. p> li>
résultat (6) p> p> l>
ol> p>