Les types primitifs

Parent Previous Next



Les types primitifs



Nous avons vu, tout au long du cours, que les chaînes de caractères étaient des objets String, les tableaux des Array, etc. C'est toujours vrai mais il convient de nuancer ces propos en introduisant le concept detype primitif.


Pour créer une chaîne de caractères, on utilise généralement cette syntaxe :

var myString = "Chaîne de caractères primitive";


Cet exemple crée ce que l'on appelle une chaîne de caractères primitive, qui n'est pas un objet String. Pour instancier un objet String, il faut faire comme ceci :

var myRealString = new String("Chaîne");


Cela est valable pour les autres objets :

var myArray = []; // Tableau primitif

var myRealArray = new Array();

 

var myObject = {}; // Objet primitif

var myRealObject = new Object();

 

var myBoolean = true; // Booléen primitif

var myRealBoolean = new Boolean("true");

 

var myNumber = 42; // Nombre primitif

var myRealNumber = new Number("42");


Ce que nous avons utilisé jusqu'à présent était en fait des types primitifs, et non des instances d'objets.


Quelle est la différence entre un type primitif et une instance ?


La différence est minime pour nous, développeurs. Prenons l'exemple de la chaîne de caractères : à chaque fois que nous allons faire une opération sur une chaîne primitive, le Javascript va automatiquement convertir cette chaîne en une instance temporaire de String, de manière à pouvoir utiliser les propriétés et méthodes fournies par l'objet String. Une fois les opérations terminées, l'instance temporaire est détruite.


Au final, utiliser un type primitif ou une instance revient au même du point de vue de l'utilisation. Mais il subsiste de légères différences avec l'opérateur instanceof qui peut retourner de drôles de résultats…


Pour une raison ou une autre, imaginons que l'on veuille savoir de quelle instance est issu un objet :

var myString = 'Chaîne de caractères';

 

if (myString instanceof String) {

  // Faire quelque chose

}


La condition sera fausse ! Et c'est bien normal puisque myString est une chaîne primitive et non une instance de String. Pour tester le type primitif, il convient d'utiliser l'opérateur typeof :

if (typeof myString === 'string') {

  // Faire quelque chose

}


typeof permet de vérifier le type primitif (en anglais on parle de datatype). Mais ici aussi faites attention au piège, car la forme primitive d'une instance de String est… object :

alert(typeof myRealString); // Affiche : « object »


Il faudra donc faire bien attention en testant le type ou l'instance d'un objet ! Il est même d'ailleurs déconseillé de faire ce genre de tests vu le nombre de problèmes que cela peut causer. La seule valeur retournée par typeof dont on peut être sûr, c'est "undefined". Nous allons étudier, plus tard dans ce chapitre, une solution pour tester si une variable contient une chaîne de caractères.


Retenez bien une chose dans l'ensemble : il est plus simple en tous points d'utiliser directement les types primitifs !


Créé avec HelpNDoc Personal Edition: Générateur de documentation iPhone gratuit

Site à deux balles