Maison >interface Web >js tutoriel >Les chaînes et les nombres sont-ils vraiment des objets en JavaScript ?

Les chaînes et les nombres sont-ils vraiment des objets en JavaScript ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-12 02:38:02753parcourir

Are Strings and Numbers Really Objects in JavaScript?

Décoder l'énigme des objets JavaScript

Dans le domaine du JavaScript, l'omniprésence des objets soulève souvent des questions. Alors que les tableaux et les fonctions présentent des comportements similaires à ceux des objets, découvrir la nature énigmatique des « chaînes » et des « nombres » peut être déroutant.

La nature insaisissable des valeurs primitives

Contrairement à la croyance populaire, tout en JavaScript n’est pas un objet. Les éléments de base tels que les chaînes, les nombres et les booléens sont classés comme primitifs, caractérisés par leur nature immuable. Contrairement aux vrais objets, les primitives manquent de méthodes et de propriétés.

L'illusion de l'objectivité

JavaScript utilise une astuce astucieuse pour faire apparaître les primitives comme des objets. Lorsque vous tentez d'accéder à la propriété d'une primitive (par exemple, s.substring(1, 2)), JavaScript crée de manière transparente un objet wrapper (par exemple, String(s)) qui possède les méthodes souhaitées. Cependant, ce wrapper est de courte durée, disparaissant dès que l'exécution de la méthode est terminée.

Preuve : la propriété inaccessible

Cette illusion devient évidente lors de l'attribution de propriétés aux primitives. , qui s’avèrent finalement futiles. Considérez le code :

var s = "foo";
s.bar = "cheese";
alert(s.bar); // undefined

Malgré l'attribution d'une propriété aux primitives, tenter de la récupérer donne un résultat indéfini. En effet, la propriété est attachée à l'objet wrapper éphémère, qui est supprimé à la fin de la méthode.

Fonctions : vrais objets

Contrairement aux primitives, les fonctions JavaScript sont objets légitimes, héritant du prototype Object. Cela leur donne la possibilité de posséder des propriétés et d'exécuter n'importe quelle méthode basée sur des objets.

Affectation de propriétés dans les fonctions

Les fonctions peuvent agir comme des objets typiques, permettant l'attribution et la récupération de propriétés. :

function foo() {}
foo.bar = "tea";
alert(foo.bar); // tea

En comprenant la distinction entre les objets primitifs et légitimes en JavaScript, nous dissipons la confusion entourant la notion répandue selon laquelle « presque tout est un objet ».

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn