Maison >interface Web >js tutoriel >Les primitives JavaScript sont-elles vraiment des objets ?

Les primitives JavaScript sont-elles vraiment des objets ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-15 00:08:02368parcourir

Are JavaScript Primitives Truly Objects?

La nature intrigante des objets JavaScript

Dans les profondeurs de la programmation, le monde de JavaScript présente une tournure inattendue : tout n'est pas un objet . Alors que de nombreux textes d'introduction suggèrent que « presque tout » relève de cette classification, un examen plus approfondi révèle une vérité différente.

À la base, un objet encapsule la fonctionnalité à travers des méthodes et des propriétés. Les tableaux, par exemple, s'adaptent à ce moule avec leurs paires clé-valeur inhérentes. Cependant, lorsqu'il s'agit de « chaînes », de « nombres » et de « fonctions », les lignes sont floues.

Ces entités peuvent ressembler à des fonctions, effectuant des transformations en entrée et produisant une sortie sans accès apparent aux propriétés ou méthodes. La notation par points reste visiblement absente dans de tels cas.

L'énigme du Wrapper

En dévoilant le mystère, nous découvrons une distinction subtile : ces primitives, comme on les appelle, n'ont pas la véritable essence des objets. Au lieu de cela, ils sont enveloppés dans des vêtements d'objets, à savoir String, Number et Boolean. Ces wrappers possèdent des méthodes et des propriétés, donnant l'illusion du comportement des objets.

Par exemple, considérons ce code :

var s = "foo";
var sub = s.substring(1, 2); // sub becomes "o"

En coulisses, JavaScript effectue une série d'étapes cachées :

  1. Crée un objet wrapper String pour s, appliquant efficacement de nouvelles chaînes.
  2. Exécute la méthode substring() sur l'objet wrapper avec les paramètres spécifiés.
  3. Supprime l'objet wrapper String.
  4. Renvoie la chaîne résultante (primitive) de l'étape 2.

L'illusion des propriétés

Pendant qu'il semble que les primitives peuvent se voir attribuer des propriétés, de telles tentatives s'avèrent vaines, comme le démontre l'exemple suivant :

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

Cela se produit parce que la propriété est définie sur l'objet wrapper éphémère String, qui est rapidement ignoré, ce qui rend la propriété inaccessible.

Fonctions : Objets déguisés

Contrairement aux primitives, les fonctions sont des objets à part entière qui héritent d'Object. Cela signifie qu’ils possèdent toutes les capacités des objets, y compris la capacité d’avoir leurs propres propriétés. En témoigne cet exemple :

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

Pour conclure

En JavaScript, tout ne revêt pas le manteau d'un objet. Les primitives, masquées par des wrappers d'objets, créent une illusion du comportement des objets. Ce n'est que grâce à une compréhension plus approfondie des subtilités de JavaScript que la véritable nature de ses objets devient apparente.

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