Maison > Article > interface Web > Les chaînes et les nombres sont-ils vraiment des objets en 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!