Skip to content

typeof et instanceof

typeof et instanceof sont deux opérateurs en JavaScript qui sont utilisés pour vérifier le type d'une variable, mais de manière différente.

typeof

L'opérateur typeof est un opérateur unaire qui renvoie une chaîne indiquant le type de son opérande. Il est principalement utilisé pour distinguer entre différents types primitifs (comme les chaînes, les nombres, et les booléens), mais a quelques particularités.

javascript
console.log(typeof "Bonjour"); // "string"
console.log(typeof 5);         // "number"
console.log(typeof true);      // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null);      // "object" (ceci est considéré comme un bug en JavaScript)
console.log(typeof {});        // "object"
console.log(typeof function() {}); // "function"
console.log(typeof "Bonjour"); // "string"
console.log(typeof 5);         // "number"
console.log(typeof true);      // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null);      // "object" (ceci est considéré comme un bug en JavaScript)
console.log(typeof {});        // "object"
console.log(typeof function() {}); // "function"

instanceof

L'opérateur instanceof est utilisé pour vérifier si un objet est une instance d'une certaine classe ou d'un constructeur spécifique. Il examine la chaîne de prototype de l'objet pour faire cette vérification.

javascript
class Voiture {
    // ...
}

let maVoiture = new Voiture();
console.log(maVoiture instanceof Voiture); // true
console.log(maVoiture instanceof Object);  // true (tous les objets JavaScript héritent de Object)
console.log(maVoiture instanceof Array);   // false
class Voiture {
    // ...
}

let maVoiture = new Voiture();
console.log(maVoiture instanceof Voiture); // true
console.log(maVoiture instanceof Object);  // true (tous les objets JavaScript héritent de Object)
console.log(maVoiture instanceof Array);   // false

Différences Clés

  • Type de Retour : typeof renvoie une chaîne indiquant le type de l'opérande, tandis que instanceof renvoie un booléen indiquant si l'objet est une instance d'un constructeur spécifique.
  • Usage : typeof est plus utile pour vérifier les types de données primitifs, tandis que instanceof est utilisé pour vérifier l'appartenance d'un objet à une classe ou à un type d'objet.
  • Limitations : typeof a des limites, comme ne pas pouvoir distinguer différents types d'objets (par exemple, il considère les tableaux comme des "object"). instanceof ne fonctionne qu'avec les objets et ne peut pas être utilisé pour vérifier les types de données primitifs.