Maison  >  Article  >  interface Web  >  Analyse des types d'emballages de base en JavaScript

Analyse des types d'emballages de base en JavaScript

黄舟
黄舟original
2017-10-25 09:41:081353parcourir

Types d'emballage de base

Les types d'emballage de base sont des types de référence spéciaux. Chaque fois qu'une valeur de type de base est lue, un objet correspondant de type d'emballage de base sera créé en arrière-plan, afin que les attributs et les méthodes puissent être appelés pour les opérations ultérieures.

ECMAScript fournit également trois types d'empaquetage de base : Number, String et Boolean.

État actuel du code

Nous écrivons souvent du code comme celui-ci. Les variables de type basique peuvent être utilisées comme objets pour appeler des propriétés et des méthodes, mais ce n'est pas un objet réel, juste une variable, alors ça Pourquoi ?


1    var str = "hello world";
2     console.log(str.length);     // 11
3     console.log(str.toUpperCase());// HELLO WORLD

En fait, afin de faciliter la manipulation des valeurs de type de données de base, la valeur du type de données de base en JavaScript créera un type wrapper de base correspondant objet en arrière-plan , sauf null et non défini, tous les types de base ont des types d'emballage correspondants.

Avec le code ci-dessus, l'arrière-plan effectuera automatiquement le traitement suivant :

Lors de l'exécution de la deuxième ligne :

  1. Créer une instance de la chaîne type;

  2. Appeler l'attribut spécifié sur l'instance

  3. Détruire cette instance

Exécuter jusqu'aux trois premières lignes :

  1. Créer une instance de type String

  2. Appeler la méthode spécifiée sur l'instance

  3. Détruisez cette instance

Vous pouvez considérer les trois étapes ci-dessus comme l'exécution du code ECMAScript suivant :


1 // 执行到第二行时
2 var str = new String("hello world");
3 str.length;
4 str = null;
5 
6 // 执行到第三行时
7 var str = new String("hello world");
8 str.toUpperCase();
9 str = null;

De cette façon, les chaînes du code ci-dessus deviennent identiques aux objets. La même chose s'applique aux types de données de base correspondant respectivement aux types Booléen et Numérique

Maintenant ; en comprenez-vous les bases ? Le type d'emballage est en fait le type correspondant au type de données de base

类型映射关系
string String
number Number
布尔类型(true、false) Boolean
Mappage de types

string Chaîne
numéro Nombre
Type booléen (vrai , faux) Booléen
Remarque :

Ce n'est pas le type d'emballage qui fournit la méthode, mais le backend du moteur javascript a créé une instance (objet) correspondant au type d'emballage de base

Chaque fois qu'une valeur de type de base est lue, un type d'emballage de base correspondant un objet sera créé en arrière-plan tel que :


1 var str = new String("hello world");
2  str.length;
3  str = null;

La différence entre les objets de type référence et les objets de type packaging de base

Le principal La différence est que les cycles de vie de ces deux objets sont différents.

Grâce au bloc de code ci-dessus, nous savons que l'objet créé automatiquement par le type d'empaquetage de base existe lorsque l'objet est appelé et est détruit une fois l'appel terminé. Cependant, pour les instances de types de référence créées à l'aide du. nouveau mot-clé, l'objet dont la portée existe actuellement.


  s='some' s.age='Joel' console.log(s.age);

Le code ci-dessus ajoute l'attribut age à la chaîne s, mais lorsque le code est exécuté sur la troisième ligne, l'attribut name a été détruit. le code est exécuté sur la troisième ligne, lors de l'exécution, une autre instance de String est créée, mais cette instance n'a pas l'attribut age, donc la sortie n'est pas définie


  s= String('some' s.age='Joel' console.log(s.age);

Résumé

1. Chaque type de données de base est mappé à des types d'emballage de base portant le même nom (sauf null et non défini).
2. Lors de la lecture d'une valeur de type de base, un objet de type d'emballage de base correspondant sera créé, facilitant ainsi les opérations sur les données.
3. Une fois l'objet de la classe d'emballage de base terminé, il sera immédiatement détruit.

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