Les objets

La notion d'objet dans JavaScript est assez simple.  Il s'agit d'un ensemble de variables (propriétés) associé à des fonctions (méthodes).

Propriétés

On appelle propriétés d'un objet l'ensemble des attributs le décrivant.

Méthodes

On appelle méthodes d'un objet les fonctions spécifiques qui peuvent agir sur cet objet contrairement aux fonctions génériques qui peuvent agir sur plusieurs objets et/ou types primitifs.

Distinction entre objet et types primitifs

Les objets sont en fait des variables complexes dans le sens qu'ils peuvent contenir plusieurs variables (y compris d'autres objets) tandis que les variables de type primitif ne contiennent qu'une seule valeur (sauf les tableaux).  Cette différence modifie le comportement de l'interpréteur lors de l'appel des fonctions dans le sens suivant:

Prototypes et constructeurs

De façon à éviter la prolifération d'objets et donc de propriétés et de méthodes pour chacune des utilisations dont on aurait besoin on peut utiliser ce qu'on appelle en POO (Programmation orientée objet) le concept de classe.  En JavaScript cela se traduit par l'utilisation d'une propriété particulière des fonctions appelée prototype et d'une variable spéciale appelée this.  Lorsque qu'une fonction fait appel à cette variable on l'appelle un constructeur d'objet.

Littéraux d'objets

Dans les cas simples il est possible de déclarer directement un objet à l'aide de la syntaxe suivante:

var objet_vide = {};

var individu = { nom: 'Jean-Claude', age = 'vieux' };

var personne = { nom: 'Jean-Claude',
                        anniversaire: {
                                jour: 27,
                                mois: 10,
                                annee: 1951
                        }
        };

Équivalent «objets» des types primitifs

Les types primitifs peuvent être traités comme des objets en utilisant leurs constructeurs.  Par exemple:

var logique = new Boolean("True");
var nombre = new Number("1939");
var chaine = new String("Une chaîne de caractères");

En fait cela n'offre pas beaucoup d'intérêt pour les types boolean et number.  Dans le cas du type string l'interpréteur convertira automatiquement le type primitif en objet au besoin, alors ...

Tableaux et fonctions

Il est important de savoir que les tableaux et les fonctions sont aussi des objets et qu'ils peuvent être créés de la même manière.  En fait, les tableaux et les objets sont à peu près interchangable.

var plus = new Function("a, b", "return (a + b);");
var tableau = new Array(5);

Beaucoup d'objets!

En regardant avec un peu de recul on réalise que toute donnée ou fonction constitue un objet dans JavaScript.  On constate aussi que tous les objets sont contenus dans d'autres objets.  Cela s'arrête avec un objet spécial appelé Object, global ou natif.  Cet objet contient la propriété prototype et les cinq méthodes suivantes:

En plus de l'objet Object il existe trois autres objets natifs: 

Lorsque JavaScript est exécuté par un navigateur plusieurs objets prédéfinis sont ajoutés:  le navigateur lui-même, le document et tout ce qu'il contient.  Nous y reviendrons plus tard.

Lectures suggérées