Maison  >  Article  >  interface Web  >  Explication détaillée des compétences de conversion de type js et de types de référence (Boolean_Number_String)_javascript

Explication détaillée des compétences de conversion de type js et de types de référence (Boolean_Number_String)_javascript

WBOY
WBOYoriginal
2016-05-16 16:56:321106parcourir

1. Conversion de types

1. Convertir en chaîne
La chose intéressante à propos des valeurs booléennes, des nombres et des valeurs primitives des chaînes d'ECMAScript est qu'elles sont des pseudo-objets, ce qui signifie qu'elles ont en fait des propriétés et méthodes.
Par exemple :

Copier le code Le code est le suivant :

var sColor = "blue";
alert(sColor.length);//outputs "4"

En bref, les trois principales valeurs primitives, les valeurs booléennes, les nombres et les chaînes ont des méthodes toString() . Tous les objets définis par ECMAScript ont une méthode toString(), qu'il s'agisse d'un pseudo-objet ou d'un objet réel.

La méthode booléenne toString() renvoie simplement "true" ou "false", et le résultat est déterminé par la valeur de la variable :

Copier le code Le code est le suivant :

var bFound = false;
alert(bFound.toString());//outputs "false"

Type numérique La méthode toString() est spéciale. Elle a deux modes, à savoir le mode par défaut et le mode de base. En utilisant le mode par défaut, la méthode toString() utilise uniquement la chaîne correspondante pour générer une valeur numérique (que ce soit). il s'agit d'un nombre entier, d'un nombre à virgule flottante ou d'une notation scientifique).
Copier le code Le code est le suivant :

var iNum1 = 10;
var fNum2 = 10.0 ;
alert(iNum1.toString()); //sorties "10"
alert(fNum2.toString()); //sorties "10"

adopte Type de nombre Le mode base de la méthode toString() peut générer des nombres dans différentes bases (bases).
Copier le code Le code est le suivant :

var iNum = 10;
alerte (iNum. toString(2)); //sort "1010"
alert(iNum.toString(8)); //sort "12"
alert(iNum.toString(16)); "A"

2. Convertir en nombres
ECMAScript fournit deux méthodes pour convertir des valeurs primitives non numériques en nombres, à savoir parseInt() et parseFloat(). .
Remarque : ce n'est que lorsque ces méthodes sont appelées sur le type String (sauf Number) qu'elles peuvent s'exécuter correctement. NaN sera renvoyé pour les autres types.

Par exemple :

Copier le codeLe code est le suivant :

var iNum1 = parseInt("1234blue ");//renvoie 1234
var iNum2 = parseInt("oxA"); //renvoie 10
var iNum3 = parseInt("22.5"); //renvoie 22
var iNum4); = parseInt(" blue"); //renvoie NaN

La méthode parseInt() a également un mode de base, qui peut convertir une chaîne binaire, octale, hexadécimale ou toute autre chaîne de base en un entier décimal. Le deuxième paramètre spécifie la base à analyser.
Copier le code Le code est le suivant :

var iNum1 = parseInt("AF", 16); // renvoie 175
var iNum2 = parseInt("10",2); // renvoie 2
var iNum3 = parseInt("10",8); = parseInt( "10",10); //returns 10

Remarque : Si le nombre décimal contient des 0 en tête, il est préférable d'utiliser la base 10, sinon la valeur obtenue sera octale.

Copier le code Le code est le suivant :
var iNum1 = parseInt("010") ; // renvoie 8
var iNum2 = parseInt("010",8); //renvoie 8
var iNum3 = parseInt("010",10); //renvoie 10

parseFloat La méthode () est similaire à la méthode parseInt(). Elle examine chaque caractère à partir de la position 0 jusqu'à ce que le premier caractère non valide soit trouvé, puis convertit la chaîne précédant le caractère en nombre. Pour cette méthode, la première virgule décimale est un caractère valide. Si deux points décimaux sont utilisés, le deuxième point décimal sera considéré comme invalide. Une autre différence dans l'utilisation de cette méthode est que la chaîne doit représenter un nombre à virgule flottante sous forme décimale.

Copier le code Le code est le suivant :

var fNum1 = parseFloat("1234blue"); //renvoie 1234.0
var fNum2 = parseFloat("0xA"); //renvoie NaN
var fNum3 = parseFloat("22.5"); //renvoie 22,5
var fNum4 = parseFloat("22.34.5");//renvoie 22,34
var fNum5 = parseFloat("0908");//renvoie NaN
var fNum6 = parseFloat("blue ");//renvoie NaN

3. Conversion de type forcée
Les trois types de conversion de type forcée disponibles dans ECMAScript sont les suivants :

(1).Boolean(value)
Convertissez la valeur donnée en type booléen.
La fonction Boolean() retournera true lorsque la valeur à convertir est une chaîne, un nombre non nul ou un objet avec au moins un caractère. Si la valeur est une chaîne vide, le nombre 0, non défini ou nul, elle renverra faux.
Par exemple :

Copier le codeLe code est le suivant :

var b1 = Boolean("" ); // false;
var b2 = Boolean("salut");//true
var b3 = Boolean(100);//true
var b4 = Boolean(null) ;//false
var b5 = Boolean(0);//false
var b6 = Boolean(new Object());//true

(2).Number( valeur)
Convertissez la valeur donnée en nombre (peut être un nombre entier ou un nombre à virgule flottante).
N'oubliez pas que les méthodes parseInt() et parseFloat() ne convertissent que la chaîne avant le premier caractère invalide, donc "4.5.6" sera converti en "4.5". La conversion avec Number() de "4.5.6" renverra NaN car la valeur entière de la chaîne ne peut pas être convertie en nombre. Si la chaîne peut être complètement convertie, Number() déterminera s'il faut appeler la méthode parseInt() ou la méthode parseFloat().
Par exemple :
Copier le code Le code est le suivant :

Numéro (faux );// 0
Nombre(true);//1
Nombre(undéfini);//NaN
Nombre(null);//0
Nombre("5.5");// 5.5
Nombre("56");//56
Nombre("5.6.7");//NaN
Nombre(new Object());//NaN
Nombre(100) ;//100

(3).String(value)
Convertissez la valeur donnée en chaîne.
La seule différence avec l'appel de la méthode toString() est que la conversion d'une valeur nulle ou non définie produit une chaîne sans générer d'erreur :
Copier le code Le code est le suivant :

var s1 = String(null);//"null"
var oNull = null;
var s2 = oNull toString. ();//provoque une erreur

2. Les types de référence
Les types de référence sont généralement appelés classes, c'est-à-dire lorsqu'un Une valeur de référence est rencontrée, l'objet est traité. ECMAScript définit des « définitions d'objets » qui sont logiquement équivalentes aux classes d'autres langages de programmation.

Classe 1.Object
Toutes les classes d'ECMAScript sont héritées de cette classe, et toutes les propriétés et méthodes de la classe Object apparaîtront dans d'autres classes (remplacées).

Attributs de la classe Objet :

(1).Constructor----Référence (pointeur) à la fonction qui crée l'objet. Pour la classe Object, ce pointeur pointe vers la fonction object() d'origine.

(2).Prototype----Une référence au prototype de l'objet. Pour toutes les classes, il renvoie une instance de l'objet Object par défaut.

Méthodes de la classe Objet :

(1).HasOwnProperty(property)----Détermine si l'objet a une propriété spécifique. La propriété doit être spécifiée sous forme de chaîne (par exemple : o.hasOwnProperty("name")).

(2).IsPrototypeOf(object)----Détermine si l'objet est le prototype d'un autre objet.

(3).PropertyIsEnumerable(property)----Déterminez si la propriété donnée peut être énumérée à l'aide de l'instruction for..in.

(4).ToString()----Renvoie la représentation sous forme de chaîne d'origine de l'objet. Différentes implémentations ECMAScript ont des valeurs différentes.

(5).ValueOf()----Renvoie la valeur d'origine qui correspond le mieux à l'objet. Pour de nombreuses classes, la valeur renvoyée par cette méthode est la même que la valeur de retour de toString().

2.Classe booléenne
Les objets booléens sont rarement utilisés dans ECMAScript, et même s'ils sont utilisés, ils ne sont pas faciles à comprendre.
Par exemple :

Copier le code Le code est le suivant :

var oFalseObject = new Boolean(false );
var bResult = oFalseObject && true;//outputs true;

Raison : Dans les expressions booléennes, tous les objets seront automatiquement convertis en vrai.

3.Classe Number
Number.MAX_VALUE et d'autres valeurs spéciales sont des attributs statiques de la classe Number. Pour obtenir la valeur originale de Number d'un objet numérique, utilisez simplement la méthode valueOf() :
var iNumber = oNumberObject.valueOf();
En plus des méthodes standards héritées de la classe Object, la classe Number dispose de plusieurs autres méthodes de traitement des valeurs numériques.

Méthode

toFixed() :
renvoie une représentation sous forme de chaîne d'un nombre avec le nombre de décimales spécifié. La méthode peut représenter des nombres comportant de 0 à 20 décimales. Les valeurs en dehors de cette plage provoqueront une erreur.
Par exemple :

Copier le code Le code est le suivant :

var oNumberObject = new Number(99 );
aler(oNumberObject.toFixed(2));//outputs "99.00"

toExponential() méthode :
renvoie un nombre exprimé en notation scientifique String formulaire. Cette méthode prend également un paramètre qui spécifie le nombre de décimales à afficher. Par exemple :
Copier le code Le code est le suivant :

var oNumberObj = new Number( 99);
alert(oNumberObj.toExponential(1));//outputs "9.9e 1"

méthode toPrecision() :
Renvoie la forme prédéterminée du nombre selon la forme la plus significative ou la forme exponentielle. Il a un argument, qui est le nombre total de chiffres utilisés pour représenter le nombre (à l'exclusion de l'exposant).
Copier le code Le code est le suivant :

var oNumberObj = new Number(99);
alert(oNumberObj.toPrecision(1));//outputs "1e 2" ==100

On peut voir que la méthode toPrecision() arrondira le nombre pour se rapprocher le plus à la réalité que possible Le nombre de valeurs.
Par exemple :
Copier le code Le code est le suivant :

var oNumberObj = new Number(99 );
alert(oNumberObj.toPrecision(2));// sort "99"
alert(oNumberObj.toPrecision(3));// sort "99.0"

Les méthodes toFixed (), toExponential() et toPrecision() effectuent toutes des opérations d'arrondi pour représenter correctement un nombre avec le nombre correct de décimales.

Méthode toLocaleString() :
peut être affichée dans un format sur la page, par exemple, 5210,50 est affiché comme 5 210,50, mais si sa valeur est utilisée, parseFloat($("N_YJJE").value.replace( //, /g, "")); remplacez la virgule et obtenez sa valeur.

Remarque : Semblables aux objets booléens, les objets Nombre sont également importants, mais ils doivent être utilisés avec parcimonie pour éviter des problèmes potentiels. Dans la mesure du possible, utilisez la représentation brute des nombres.

4. Classe String
La méthode valueOf() et la méthode toString() de l'objet String renverront la valeur originale du type String :

Copier le code Le code est le suivant :

alert(oStringObj.valueOf() == oStringObj.toString());//outputs "true "

La classe String a une longueur d'attribut, qui est le nombre de caractères dans la chaîne :
Copier le code Le code est le suivant :

var oStringObj = new String("hello world");
alert(oStringObj.length);outputs "11"

Remarque : même si la chaîne contient des caractères doubles octets, chaque caractère n'est compté que pour un seul caractère.

Méthode charAt() :
renvoie une chaîne contenant le caractère à la position spécifiée :

Copier le code Le code est la suivante :

var oStringObj = new String("hello world");
alert(oStringObj.charAt(1));outputs "e"

Méthode charCodeAt() :
renvoie une chaîne contenant le code du caractère à la position spécifiée :
Copier le code Le code est comme suit :

var oStringObj = new String("hello world");
alert(oStringObj.charCodeAt(1));outputs "101"
Méthode
concat() :
est utilisée pour concaténer une ou plusieurs chaînes à la valeur d'origine de l'objet String. L'objet String d'origine reste inchangé.
Copier le code Le code est le suivant :

var oStringObj = new String("hello " );
var sResult = oStringObj.concat("world");//oStringObj "world"; plus commun
alert(sResult);//outputs "hello world"
alert(oStringObj);/ /outputs " bonjour"

Les méthodes indexOf() et lastIndexOf() renvoient la position de la sous-chaîne spécifiée dans une autre chaîne (ou -1, si la sous-chaîne n'est pas trouvée). La différence entre ces deux méthodes est que indexOf() commence à rechercher la sous-chaîne à partir du début de la chaîne (position 0), tandis que lastIndexOf() commence à rechercher la sous-chaîne à partir de la fin de la chaîne.

localeCompare(), compare les chaînes (comparez par ordre alphabétique, les dernières sont plus grandes). Cette méthode a un paramètre - la chaîne à comparer, et renvoie l'une des trois valeurs suivantes :
1. Si l'objet String est classé par ordre alphabétique avant la chaîne dans le paramètre, un nombre négatif est renvoyé (le plus courant est. -1, mais le rendement réel est déterminé par la mise en œuvre).
2. Si l'objet String est égal à la chaîne dans le paramètre, renvoie 0.
3. Si l'objet String est classé par ordre alphabétique après la chaîne dans le paramètre, renvoie un nombre positif (le plus courant est 1, mais le retour réel est déterminé par l'implémentation)

Méthodes slice() et substring() :
Ces deux méthodes renvoient des sous-chaînes de la chaîne à traiter, et toutes deux acceptent un ou deux paramètres. Le premier paramètre est la position de début de la sous-chaîne à obtenir, et le deuxième paramètre est la position avant la fin de la sous-chaîne à obtenir (les caractères à la position terminale ne sont pas inclus dans la valeur renvoyée). Si le deuxième argument est omis, le bit de terminaison prend par défaut la longueur de la chaîne. Aucune de ces méthodes ne modifie la valeur de l'objet String lui-même.

Copier le code Le code est le suivant :

var oStringObj = new String("hello world ");
alert(oStringObj.slice(3));//sorties "lo world"
alert(oStringObj.slice(3,7));//sorties "low"

Remarque : Pour les paramètres négatifs, la méthode slice() ajoutera la longueur de la chaîne au paramètre et la méthode substring() la traitera comme 0 (c'est-à-dire qu'elle sera ignorée).
Copier le code Le code est le suivant :

var oStringObj = new String("hello world ");
alert(oStringObj.slice(-3));//outputs "rld" équivaut à prendre le sens inverse
alert(oStringObj.substring(-3));//outputs "hello world "
alert (oStringObj.slice(3,-4));//sort "low"
alert(oStringObj.substring(3,-4));//sort "hel" substring() toujours remplace le plus petit Le nombre sert de bit de départ et le plus grand nombre sert de bit de fin.

toLowerCase(), toLocalLowerCase(), toUpperCase() et toLocaleUpperCase() :
Les deux premières méthodes convertissent la chaîne en minuscules, et les deux dernières méthodes sont utilisées pour convertir la chaîne Complétez en majuscules. Les méthodes toLocalLowerCase() et toLocaleUpperCase() sont implémentées en fonction de régions spécifiques.

Rappelez-vous : toutes les propriétés et méthodes de la classe String peuvent être appliquées aux valeurs primitives String car ce sont des pseudo-objets.

5. Opérateur instanceof
Il y a un problème lors de l'utilisation de l'opérateur typeof pour stocker des valeurs dans des types référence. Quel que soit le type d'objet référencé, il renvoie "objet". La méthode instanceof oblige les développeurs à confirmer explicitement que l'objet est d'un type spécifique. Par exemple :

Copier le code Le code est le suivant :

var oStrObj = new String( "bonjour tout le monde" );
alerte (oStrObj instanceof String);//sortie "true"
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