Introduction
Nous savons tous que les types de données JavaScript sont divisés en deux catégories: types de base (ou types primitifs) et types de référence.
Les valeurs des types de base sont des segments simples de données stockés dans la mémoire de la pile, et ils sont accessibles par valeur. Il existe cinq types de base dans JS: Undefined, Null, Boolean, Number et String.
Une valeur de type de référence est un objet stocké dans la mémoire du tas, et sa valeur est accessible par référence. Les types de référence sont principalement des objets, du tableau, de la fonction, du regexp et de la date.
Les objets ont des propriétés et des méthodes, il n'est donc pas surprenant que nous voyions le code suivant.
var favs = ['egg', 'lotus pot']; favs.push ('gombo'); console.log (favs); // ["egg", "lotus pot", "goa"] console.log (favs.length); // 3Le tableau est un type de référence, il peut donc naturellement avoir des attributs (longueur) et des méthodes (push), ce qui est naturel comme avoir à manger de la glace en été. Mais, regardez le code suivant et pensez-y soigneusement, est-ce, ceci, cela, légal?
var realMessage = "dit que je t'aime mais j'ai menti"; var myMessage = realMessage.Substring (5,15); console.log (myMessage); //"Je t'aime"
Il y a une fille au cœur brisé qui fera la méthode "sous-chaîne" effectuer volontairement la méthode "sous-chaîne" sur une chaîne utilisée pour se casser, puis regarder joyeusement la coupe et s'endormir. Mais, mais, n'est-il pas dit que la chaîne est un type de base? Pourquoi peut-il avoir des méthodes? ? Y a-t-il une autre loi royale, Maître Qingtian!
En fait, tout cela est dû à quelque chose appelé "type d'emballage de base". Ce type d'emballage de base est particulièrement honnête, et c'est le vrai "retour des vêtements après la question, cachant les mérites et la renommée"!
Type d'emballage de base
En plus des types de référence tels que l'objet et le tableau mentionnés au début, JavaScript nous fournit également trois types de référence spéciaux: chaîne, numéro et booléen, ce qui nous facilite pour faire fonctionner les types de base correspondants.
Continuez à regarder l'exemple ci-dessus des chaînes d'écrasement. Avez-vous remarqué qu'en dépit de l'utilisation de la méthode de la sous-chaîne, la valeur de REAGEMESSAGE elle-même ne changera pas. L'appel de cette méthode renvoie uniquement une nouvelle chaîne.
C'est ce que fait le type d'emballage de base. À l'origine, vous n'avez pas de méthode, mais lorsque vous souhaitez l'utiliser, vous pouvez simplement l'ajuster et le type de package de base correspondant a cette méthode. Par exemple, la méthode de sous-chaîne ci-dessus, il est impossible que le type de base de la chaîne ait cette méthode, mais le type de chaîne de packaging l'a, il chuchote et renverra le résultat après avoir exécuté cette méthode. En exécution vers:
Beaucoup de choses se sont produites lorsque RealMessage.Substring (5,15) Cette ligne de code.
Tout d'abord, il lira la valeur de RealMessage de la mémoire. Lorsque dans ce mode de lecture, l'arrière-plan commence à fonctionner. JS Elevation décrit ces actions terminées en arrière-plan comme celle-ci:
1. Créez une instance de type de chaîne;
2. Appelez la méthode spécifiée sur l'instance;
3. Détruisez cette instance
L'exemple ci-dessus peut être expliqué dans le code comme celui-ci:
var _realMessage = new String ("dit que je t'aime mais j'ai menti"); var myMessage = _realMessage.Substring (5,15); _ realMessgae = null; // détruire après que la méthode est appeléeAinsi, de cette manière, nous comprenons que ce n'est pas que la chaîne de type de base exécute sa propre méthode, mais l'arrière-plan crée une chaîne de type de wrapper de base correspondante pour lui. Il instancie une instance en fonction de la valeur du type de base, laissant cette instance appeler la méthode spécifiée, et enfin se détruire, qui se déplace.
Faites attention à la fonction "Détruire" de la dernière étape du type de wrapper de base, qui détermine que nous ne pouvons pas ajouter des propriétés et des méthodes personnalisées aux valeurs de type de base.
var me = "sunjing"; me.age = 18; console.log (me.age); // non défini
J'ai ajouté l'attribut d'âge à la chaîne "Me", et la valeur est faite pour avoir une belle 18 ans. Cependant, lorsque j'ai accédé à nouveau, cet attribut avait disparu. C'est parce que:
Lorsque la deuxième ligne d'attribut de code est effectuée, une instance du type de wrapper de base est créée en arrière-plan. Cet attribut d'âge est en effet accroché à l'instance, mais immédiatement après, l'instance est détruite. Lors de l'exécution de la troisième ligne, une nouvelle instance du type de wrapper de base est recréée, et naturellement il n'y a pas d'attribut d'âge.
Afficher le type d'emballage de base
En plus de la chaîne en mode lecture, l'arrière-plan nous aidera à créer l'instance de type de wrapper de base, que nous pouvons également afficher.
var str = new String ("Hello"); var str2 = str.toupperase (); console.log (str2); // "Bonjour:Ceci est différent de ce qui est enregistré dans la variable lorsque l'arrière-plan nous aide à créer.
var str1 = new String ("Hello"); var str2 = "hello"; typeof str1 // "objet" type de str2 // "string"Résumer
Grâce au type d'emballage de base, il est plus pratique pour nous de faire fonctionner les trois types de base de chaîne, de booléen et de numéro. Chaque fois que ces trois valeurs de type de base sont lues, l'arrière-plan créera l'instance de type wrapper correspondant. Cette instance appellera la méthode spécifiée et sera détruite après l'appel. Ce court cycle de vie détermine que nous ne pouvons pas ajouter des propriétés et des méthodes personnalisées aux types primitifs.
L'article ci-dessus a une compréhension approfondie des raisons pour lesquelles les chaînes peuvent être détenues en JavaScript. C'est tout le contenu que je partage avec vous. J'espère que cela pourra vous donner une référence et j'espère que vous pourrez soutenir Wulin.com plus.