Maison > interface Web > js tutoriel > Une brève discussion sur les types d'emballage de base dans les compétences javascript_javascript

Une brève discussion sur les types d'emballage de base dans les compétences javascript_javascript

WBOY
Libérer: 2016-05-16 15:57:01
original
984 Les gens l'ont consulté

Afin de faciliter le fonctionnement des valeurs de type de base, ECMAScript fournit également 3 types de référence spéciaux : Boolean, Number et String. Ces types sont similaires aux autres types de référence présentés dans ce chapitre, mais ont également un comportement spécial correspondant à leurs types de base respectifs. En fait, chaque fois qu'une valeur de type de base est lue, un objet du type wrapper de base correspondant sera créé en arrière-plan, nous permettant d'appeler certaines méthodes pour manipuler ces données. Exemple ci-dessous :

Copier le code Le code est le suivant :

var s1="du texte";
var s2=s1.substring(2);
La variable s1 dans cet exemple contient une chaîne. La chaîne est bien sûr une valeur de type de base, et la ligne de code suivante appelle la méthode substring() de s1 et enregistre le résultat renvoyé dans s2. Nous savons que les valeurs de type primitif ne sont pas des objets, donc logiquement elles ne devraient pas avoir de méthodes (même si, comme nous le souhaitons, elles en ont). En fait, pour réaliser cette opération intuitive, une série de processus ont été automatiquement complétés en arrière-plan. Lorsque la deuxième ligne de code accède à s1, le processus d'accès est en mode lecture, c'est-à-dire que la valeur de cette chaîne est lue dans la mémoire. Lors de l'accès à une chaîne en mode lecture, le traitement suivant sera automatiquement effectué en arrière-plan.

1. Créez une instance de type String
2. Appelez 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.

Copier le code Le code est le suivant :
var s1=new String("du texte");
var s2=s1.substring(2);
s1 = nul ;

Après ce traitement, la valeur de chaîne de base devient la même que l'objet, et les trois étapes ci-dessus sont également applicables aux valeurs booléennes et numériques correspondant respectivement aux types Booléen et Numérique.

La principale différence entre les types de référence et les types d'emballage de base est la durée de vie de l'objet. Les instances de types référence créées à l'aide de l'opérateur new restent en mémoire jusqu'à ce que le flux d'exécution quitte la portée actuelle. L'objet de type packaging de base créé automatiquement n'existe qu'au moment où une ligne de code est exécutée, puis est immédiatement détruit. Cela signifie que nous ne pouvons plus ajouter de propriétés et de méthodes aux valeurs de type primitif au moment de l'exécution. A titre d'exemple ci-dessous :

Copier le code Le code est le suivant :
var s1="du texte"
s1.color="rouge";
alerte(s1.color);//non défini

Ici, la deuxième ligne de code tente d'ajouter un attribut de couleur à la chaîne s1. Cependant, lorsque la troisième ligne de code accède à s1 ici, sa propriété color est manquante. La cause du problème est que l'objet String créé dans la deuxième ligne a été détruit lors de l'exécution de la troisième ligne de code. La troisième ligne de code crée son propre objet String, qui n'a pas d'attribut color.

Bien sûr, vous pouvez appeler explicitement Boolean, Number et String pour créer des objets de types d'emballage de base. Cependant, vous ne devez le faire que lorsque cela est absolument nécessaire, car il est facile de perdre de vue si vous avez affaire à un type de wrapper de base ou si vous faites référence à une valeur d'un type de wrapper de base. L'appel de typeof sur une instance d'un type wrapper de base renvoie "object" et tous les objets du type wrapper de base sont convertis en la valeur booléenne true.

Le constructeur Object renverra également, comme une méthode d'usine, une instance du type de wrapper de base correspondant en fonction du type de valeur transmis. Par exemple :

Copier le code Le code est le suivant :
var obj=new Object("du texte");
alert(obj instanceof String);//true

Passer une chaîne au constructeur Object créera une instance de String ; passer un paramètre numérique obtiendra une instance de Number, et passer un paramètre booléen obtiendra une instance de Boolean.

Il convient de noter qu'utiliser new pour appeler le constructeur du type d'emballage de base est différent de l'appel direct de la fonction de transformation du même nom. Par exemple :

Copier le code Le code est le suivant :
var valeur="25";
var number=Number(value); //Fonction de transformation
alert(type de numéro); //"numéro"
var obj=new Number(value); //Constructeur
alert(typed'objet); //"objet"

  在這個例子中,變數number中保存的是基本型別的值25,而變數obj中保存的是Number的實例。

  儘管我們不建議明確的創建基本包裝類型的對象,但它們操作基本類型值的能力還是相當重要的。而每個基本包裝類型都提供了操作對應值的便捷方法。

意思所述就是本文的全部內容了,希望大家能夠喜歡。

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal