Application des objets ECMAScript
- Page précédente Orienté objet
- Page suivante Types d'objets
La création et la destruction des objets se produisent pendant l'exécution de JavaScript, comprendre le sens de ce paradigme est crucial pour comprendre tout le langage.
Déclaration et instanciation
La création d'un objet se fait en utilisant le mot-clé new suivi du nom de la classe à instancier :
var oObject = new Object(); var oStringObject = new String();
La première ligne de code crée une instance de la classe Object et la stocke dans la variable oObject. La deuxième ligne de code crée une instance de la classe String et la stocke dans la variable oStringObject. Si le constructeur n'a pas de paramètres, les parenthèses ne sont pas nécessaires. Par conséquent, les deux lignes de code précédentes peuvent être réécrites sous la forme suivante :
var oObject = new Object; var oStringObject = new String;
Référence d'objet
Dans les chapitres précédents, nous avons présentéConcept de type de référenceEn ECMAScript, on ne peut accéder à la représentation physique d'un objet, mais seulement à sa référence. Chaque fois qu'un objet est créé, ce qui est stocké dans la variable est une référence à cet objet, et non l'objet lui-même.
Désréférencement d'objet
ECMAScript possède une routine de collecte des unités de stockage inutiles (garbage collection routine), ce qui signifie qu'il n'est pas nécessaire de détruire spécifiquement les objets pour libérer la mémoire. Lorsqu'il n'y a plus de références à un objet, on dit que cet objet est désréférencé. Lorsque la routine de collecte des unités de stockage inutiles est exécutée, tous les objets désréférencés sont détruits. Chaque fois que une fonction exécute son code, la routine de collecte des unités de stockage inutiles s'exécute, libérant toutes les variables locales, et dans d'autres cas imprévisibles, la routine de collecte des unités de stockage inutiles s'exécute également.
Il est possible de désallouer l'objet de force en mettant toutes les références à l'objet en null. Par exemple :
var oObject = new Object; // ici, faire quelque chose avec l'objet oObject = null;
Lorsque la variable oObject est définie sur null, il n'y a plus de référence à l'objet créé pour la première fois. Cela signifie que lors du prochain lancement du programme de collecte de cellules inutilisées, l'objet sera détruit.
Il est une bonne habitude de désallouer un objet après l'utilisation, pour libérer la mémoire. Cela assure également que les objets qui ne peuvent plus être accédés ne sont plus utilisés, ce qui permet de prévenir les erreurs de conception du programme. De plus, les anciens navigateurs (comme IE/MAC) n'ont pas de programme de collecte de cellules inutilisées complète, donc lors du déchargement de la page, l'objet peut ne pas être détruit correctement. La désallouation de l'objet et de toutes ses caractéristiques est la meilleure méthode pour assurer l'utilisation correcte de la mémoire.
Remarque :Attention, il faut être prudent lorsqu'on supprime toutes les références à un objet. Si un objet a deux ou plus de références, pour supprimer correctement l'objet, il est nécessaire de mettre toutes les références en null.
Liage précoce et tardif
Le terme de liage (binding) fait référence à la méthode de lier l'interface de l'objet à l'instance de l'objet.
Le liage précoce (early binding) fait référence à la définition des attributs et des méthodes de l'objet avant l'instanciation de l'objet, de sorte que le compilateur ou l'interpréteur peut convertir le code machine à l'avance. Dans des langages tels que Java et Visual Basic, avec le liage précoce, IntelliSense (qui fournit à l'informaticien la liste des attributs et des méthodes de l'objet) peut être utilisé dans l'environnement de développement. ECMAScript n'est pas un langage de type fort, donc il ne prend pas en charge le liage précoce.
D'autre part, le liage tardif (late binding) fait référence à l'ignorance du type d'un objet par le compilateur ou l'interpréteur avant l'exécution. En utilisant le liage tardif, il n'est pas nécessaire de vérifier le type de l'objet, il suffit de vérifier si l'objet prend en charge les attributs et les méthodes. Tous les variables ECMAScript utilisent la méthode de liage tardif. Cela permet d'exécuter de nombreuses opérations d'objets sans pénalité.
- Page précédente Orienté objet
- Page suivante Types d'objets