[Recommandations associées : didacticiels vidéo JavaScript, front-end Web]
Cet article explorera un concept extrêmement intéressant, à savoir les méthodes d'attributs des types de base. Et si, êtes-vous un peu confus ? Laissez-moi vous expliquer lentement ~
Dans d'autres langages de programmation orientés objet, tels que Java
et C++
, les attributs sont un concept unique d'objet, et le type de base est le type de base. Il n'y a pas de concept de méthode d'attribut.
Oui, c'est une autre mauvaise idée de JavaScript
. Son moteur nous permet d'utiliser des méthodes de propriété pour manipuler des types de données de base comme des objets.
Avant d'expliquer cette étrange fonctionnalité, nous devons d'abord clarifier quelle est la différence entre les types de base et les types d'objets ?
{ }
JavaScript
;7
types de base en JavaScript
, à savoir : String
, Number
, Boolean
, BigInt
, Symbol
, null
et undefined
;{ }
Créez et pouvez stocker plusieurs valeurs ;JavaScript
a également d'autres types d'objets, tels que des fonctions ; ilsera abordé dans l'orientation objet. Une fonctionnalité clé de l'introduction d'objets est l'encapsulation , qui peut stocker toutes sortes de données et de méthodes désordonnées en une seule. object , réduisant ainsi la complexité d’utilisation.
Par exemple :
laissez l'utilisateur = { nom: "xiaoming", Bonjour() { console.log(`Bonjour, je m'appelle ${this.name}`); }}user.hello();
Nous encapsulons les attributs et les méthodes de l' user
de l'objet dans un objet, afin qu'il soit très simple à utiliser. Nous n'avons besoin que d'utiliser obj.attr
pour appeler des méthodes ou des attributs.
Cependant, cela implique une surcharge supplémentaire (l'orientation objet a une surcharge supplémentaire), et c'est également là que le langage orienté objet C++
est plus lent que C
comme objets Il existe deux problèmes difficiles à concilier lors de l'utilisation de types de base comme objets :
"abc".toUpperCase()
;JavaScript
résout les problèmes ci-dessus d'une manière très « simple » :
String
, Number
, Boolean
et Symbol
la signification des règles ci-dessus est que le type de base est toujours un type de base, mais que se passe-t-il si nous voulons accéder aux méthodes et propriétés d'un type de base, nous encapsulons le type de base dans un objet (wrapper d'objet), puis détruisez-le une fois l’accès terminé. Pour être honnête, cela semble un peu ridicule.
Un exemple
let name = "Trump";console.log(name.toUpperCase());//Méthodes pour accéder aux types de base
Les résultats d'exécution du code ci-dessus sont les suivants :
Il semble qu'il n'y ait pas de gros problème, mais beaucoup de choses se sont produites, et nous devons connaître les points suivants :
name
est un type de chaîne de base, et il n'a rien de spécialname
, un fichier contenanttoUpperCase
;toUpperCase
renvoie une nouvelle chaîne ;la valeur de la variable elle-même ne change pas, comme suit :
Bien que la solution soit pleine de compromis (mauvaises idées), le résultat est quand même bon, et les résultats obtenus sont les suivants :
bien que cela soit théoriquement vrai, en fait, le moteur JavaScript
est hautement optimisé pour ce processus, et je soupçonne qu'il ne crée pas du tout d'objets supplémentaires. Il a simplement déclaré verbalement qu'il suivait les règles, comme s'il avait réellement un objet temporaire.
Cet article ne présente que brièvement le concept des méthodes de type de base et n'explique pas les différentes méthodes. Au fur et à mesure que le didacticiel continue de s'approfondir, un grand nombre de méthodes seront progressivement impliquées. Ici, nous énumérons seulement brièvement quelques méthodes et propriétés couramment utilisées des types de base.
Différents types de base ont différentes méthodes d'attribut, qui sont répertoriées dans les catégories suivantes :
Attribut de longueurlength
renvoie la longueur de la chaîne
console.log("abc".length);
Les résultats du code ci-dessus sont les suivants :
indexOf(ch)
renvoie l'indice du premier caractère ch
dans la chaîne
console.log("abc".indexOf('b'));console.log("abc".indexOf('d'))
; les résultats de l'exécution du code sont les suivants :
Lorsque le caractère existe dans la chaîne, l'index (compté à partir de 0
) est renvoyé, s'il n'est pas trouvé, -1
est renvoyé.
méthode concat(str)
, épissure de deux chaînes
let str1 = "hello ";let str2 = "world!";console.log(str1.concat(str2));console.log(str1);console.log(str2 );
Les résultats de l'exécution du code sont les suivants :
méthode replace(str1,str2)
, utilisez str2
pour remplacer str1
console.log
(str);
comme suit:
toFixed(num)
, arrondir les décimales à la précision spécifiée
console.log
(9.3333333.toFixed(0));
Méthode toString()
, convertit les nombres en chaînes
3.14.toString();//Convertir en '3.14'console.log((8).toString(2));//Convertir en binaire '1000'console.log((( 9).toString(2));//Convertir en binaire '1001'console.log((996).toString(16));//Convertir en chaîne hexadécimale '3e4'Les
résultats de l'exécution du code sont les suivants :
Méthode toExponential()
, convertie en méthode de comptage exponentiel
console.log(3.1415926.toExponential()); console.log(3.1415926.toExponential(2))
; comme suit:
D’autres méthodes seront présentées dans les chapitres suivants, je n’entrerai donc pas dans les détails ici.
Comme Java
, JavaScript
peut créer explicitement des « enveloppeurs d'objets » pour les types de base via l'opérateur new
. Cette approche est extrêmement déconseillée . Elle est mentionnée ici uniquement pour des raisons d'intégrité.
Il y a des problèmes avec cette approche, par exemple :
let num = new Number(0);console.log(typeof num);console.log(typeof 0);
Les résultats de l'exécution du code sont les suivants :
Ou bien, il y aura une confusion dans le jugement :
let zero = new Number(0);if (zero) { // zéro est vrai car c'est un objet console.log('true');}
Le résultat de l'exécution du code est le suivant suit :
En même temps, n'oubliez pas que la fonction String/Number/Boolean
sans new
(mot-clé) peut convertir une valeur dans le type correspondant : en chaîne, en nombre ou en valeur booléenne (type original).
Par exemple :
console.log(typeof Number('123'));
Remarque :
Les deux types
null
etundefined
n'ont aucune méthode.
les types de base autres que null
et undefined
fournissent de nombreuses méthodes utiles
bien que JavaScript
les utilise
une méthode d'implémentation compromise, mais a obtenu des résultats relativement satisfaisants, réalisant les attributs et les appels de méthode des types de base à moindre coût
[Recommandations associées : didacticiels vidéo JavaScript, front-end Web]
Voici comment JavaScript réalise que les types de base ont les mêmes ; attributs et objets en tant qu'objets Pour plus de détails sur la méthode, veuillez faire attention aux autres articles connexes sur le réseau de code source pour plus d'informations !