Dans Microsoft JScript, les objets sont essentiellement des collections de propri�t�s et de m�thodes. Une m�thode est une fonction membre d'un objet; une propri�t� une valeur ou un jeu de valeurs (sous la forme d'un tableau ou d'un objet), �galement membre d'un objet. JScript prend en charge trois types d'objets: les objets intrins�ques, les objets que vous cr�ez et ceux de l'Explorateur, qui ne sont pas expliqu�s ici.
Dans JScript, objets et tableaux sont trait�s de fa�on identique. Vous pouvez faire r�f�rence � tout membre d'un objet (ses propri�t�s et m�thodes) par son nom (en utilisant le nom de l'objet, suivi d'un point, puis du nom de la propri�t�) ou par son indice figurant dans le tableau. La num�rotation des indices dans JScript commence � 0. Pour plus de commodit�, vous pouvez aussi faire r�f�rence � l'indice par son nom.Ainsi, la r�f�rence � une propri�t� peut se faire de plusieurs mani�res. Toutes les instructions suivantes sont �quivalentes.
S'il est possible d'utiliser des crochets pour faire r�f�rence � une propri�t� par son indice num�rique, la convention appliquant un point (.) n'est pas autoris�e avec les num�ros d'indice. L'instruction suivante g�n�re une erreur.theWidth = spaghetti.width; theWidth = spaghetti[3]; // [3] est l'indice de "width". theWidth = spaghetti["width"];
Si un objet poss�de un autre objet comme propri�t�, la convention d'affectation des noms suit la m�me logique.theWidth = spaghetti.3;
Le fait que des objets puissent avoir d'autres objets comme propri�t�s vous permet de g�n�rer des tableaux comportant plusieurs indices qui ne sont pas directement pris en charge. Le code suivant cr�e une table de multiplication pour les valeurs allant de 0x0 � 16x16.var init4 = toDoToday.shoppingList[3].substring(0,1); // le tableau shoppingList est une propri�t� de toDoToday.
Pour faire r�f�rence � un �l�ment d'un tableau de ce type, utilisez plusieurs paires de crochets.var multTable = new Array(17); // Cr�e la structure qui deviendra la table. for (var j = 0; j < multTable.length; j++) { // La pr�pare pour la remplir de lignes. var aRow = new Array(17); // Cr�e une ligne. for (var i = 0; i < aRow.length; i++) { // Pr�pare le remplissage des lignes. aRow[i] = (i + " x " + j + " = " + i*j); // Cr�e et inscrit une valeur. } multTable[j] = aRow; // Place la ligne remplie dans la table. }L'instruction suivante g�n�re une erreur:var multiply3x7 = multTable[3][7];var multiply3x7 = multTable[3, 7];Objets intrins�quesMicrosoft JScript fournit quatre objets intrins�ques (ou "int�gr�s"): Array, String, Math et Date.Objets Array
Dans JScript, les objets sont trait�s comme des tableaux et inversement. La r�f�rence aux indices d'un tableau, parfaitement �quivalents aux propri�t�s d'un objet, peut s'effectuer par des num�ros (ou par des noms si vous leur avez affect� des noms). Pour cr�er un nouveau tableau, utilisez l'instruction new et le constructeur Array(), comme illustr� dans l'exemple suivant.
Lorsque vous cr�ez un tableau avec le mot cl� Array, JScript inclut au tableau une propri�t� length (longueur) en �criture seule, qui enregistre le nombre d'entr�es du tableau. Si vous ne pr�cisez aucun nombre, la propri�t� prend la valeur 0, et le tableau n'a aucune entr�e. Sinon, la longueur du tableau d�pend du nombre que vous avez indiqu�. Si vous sp�cifiez plusieurs param�tres, ils sont utilis�s comme entr�es du tableau, et le nombre de param�tres est affect� � la propri�t� length, comme illustr� dans l'exemple suivant, �quivalent au pr�c�dent.var theMonths = new Array(12) { theMonths[0] = "jan"; theMonths[1] = "f�v"; theMonths[2] = "mar"; theMonths[3] = "avr"; theMonths[4] = "mai"; theMonths[5] = "jun"; theMonths[6] = "jul"; theMonths[7] = "ao�"; theMonths[8] = "sep"; theMonths[9] = "oct"; theMonths[10] = "nov"; theMonths[11] = "d�c"; }
JScript modifie automatiquement la valeur de la length si vous ajoutez des �l�ments au tableau cr�� avec le mot cl� Array.var theMonths = new Array("jan", "f�v", "mar", "avr", "mai", "jun", "jul", "ao�", "sep", "oct", "nov", "d�c");
Objets String
Dans JScript, les cha�nes sont des objets. Autrement dit, chaque fois que vous d�clarez une variable de cha�ne ou utilisez un litt�ral de cha�ne, en r�alit� vous cr�ez un nouvel objet string (cha�ne). L'objet string poss�de certaines m�thodes int�gr�es que vous pouvez utiliser avec vos cha�nes. Notamment, la m�thode substring renvoie une partie de cha�ne. Deux chiffres constituent ses arguments.
L'objet string poss�de entre autres la propri�t� length. Cette propri�t� contient le nombre de caract�res de la cha�ne, soit 0 pour une cha�ne vide. Il s'agit d'une valeur num�rique que vous pouvez utiliser directement dans les calculs.aString = "0123456789"; var aChunk = aString.substring(4, 7); // Affecte � aChunk la valeur "456". var aNotherChunk = aString.substring(7, 4); // Affecte � aNotherChunk la valeur "456". // en utilisant l'exemple pr�c�dent de cr�ation de tableau: firstLetter = theMonths [5].substring(0,1); // Affecte � la variable firstLetter la valeur "j".var howLong = "Bonjour".length // Affecte � la variable howLong la valeur 7.Objet Math
L'objet Math comporte un certain nombre de propri�t�s et de m�thodes, toutes pr�d�finies. Les propri�t�s sont des nombres sp�cifiques. L'une d'entre elles, Math.PI, est la valeur de pi (environ 3,14159...), comme illustr� dans l'exemple suivant:
L'une des m�thodes int�gr�es de l'objet Math est la m�thode d'�l�vation � la puissance, pow. L'exemple suivant applique ces deux derni�res m�thodes.// Une variable radius est d�clar�e et prend une valeur num�rique. var circleArea = Math.PI * radius * radius; // Notez les majuscules dans Math et PI.
// Cette formule calcule le volume d'une sph�re en fonction du rayon donn�. volume = (4/3)*(Math.PI*Math.pow(radius,3));Objet Date
Utilisez l'objet Date pour capturer la date actuelle et pour calculer les diff�rences de dates. Il poss�de un certain nombre de propri�t�s et m�thodes, toutes pr�d�finies. En g�n�ral,l'objet Date donne la date en jour, mois et ann�e; l'heure en heures, minutes et secondes.Ces informations sont bas�es sur le nombre de millisecondes �coul�es depuis le 1er janvier 1970, 00:00:00.000 GMT. GMT (Greenwich Mean Time) est le temps universel (T.U.), mais l'acronyme UTC (Coordinated Universal Time) est g�n�ralement pr�f�r� et fait r�f�rence aux signaux �mis par le World Time Standard.
Pour cr�er un nouvel objet Date, vous devez utiliser l'instruction new. L'exemple suivant calcule, pour l'ann�e en cours, le nombre de jours �coul�s et le nombre de jours restants.
Note Pour JScript, le point de r�f�rence est le 1er janvier 1970 � minuit. Vous ne pouvez donc pas demander � JScript de cr�er un objet Date repr�sentant une date ant�rieure. Si vous devez traiter des dates ant�rieures, il vous faut �crire votre propre code, t�che gigantesque.
/* Cet exemple utilise le tableau des mois d�fini pr�c�demment. La premi�re instruction affecte � la variable thisIsToday la date du jour, au format "Jour Mois Ann�e 00:00:00". */ var thisIsToday = new Date(); var toDay = new Date(); // Capture la date actuelle. // Extrait l'ann�e, le mois et le jour. var thisYear = toDay.getYear() + 1900; var thisMonth = theMonths[toDay.getMonth()]; var thisDay = thisMonth + " " + toDay.getDate() + "," + (parseInt(toDay.getYear()) + 1900); // D�termine le nombre de jours depuis le point de r�f�rence. thisDay = Math.round(Date.parse(thisDay)/8.64e7); // Proc�de de m�me pour le d�but de l'ann�e. var firstDay = "1er jan " + thisYear; firstDay = Math.floor(Date.parse(firstDay)/8.64e7); // Proc�de de m�me pour la fin de l'ann�e, au cas o� ce serait une ann�e bissextile. var lastDay = "31 d�c " + thisYear; lastDay = Math.floor(Date.parse(lastDay)/8.64e7); // Calcule le nombre de jours dans l'ann�e. var daysInYear = (lastDay - firstDay) + 1; // D�termine le nombre de jours �coul�s et le nombre de jours restants. var daysElapsed = thisDay - firstDay; var daysLeft = daysInYear - daysElapsed; // D�finit des commentaires pour la plupart de l'ann�e. var comment1 = daysElapsed+ " jours se sont �coul�s dans l'ann�e."; var comment2 = "Cela signifie qu'il reste " + daysLeft + " jours en " + thisYear + "."; // Couvre les cas sp�ciaux: d�but et fin de l'ann�e et jour isol�. if (daysElapsed == 0) { comment1 = "1er janvier " + thisYear + "."; } if (daysElapsed == 1) { comment1 = "Un seul jour s'est �coul�."; } if(daysElapsed == daysInYear) { comment1 = thisYear + " est presque termin�."; } if (daysLeft == 0) { comment2 = "Meilleurs v�ux pour la nouvelle ann�e!"; } if (daysLeft == 1) { comment2 = thisYear + "ne compte plus qu'une journ�e."; } if (daysLeft == daysInYear) { comment2 = "Bonne ann�e!"; }Avant de cr�er des instances d'un objet, vous devez le d�finir en lui attribuant des propri�t�s et, le cas �ch�ant, des m�thodes. L'exemple suivant d�finit un objet pasta (p�te). Notez le mot cl� this, utilis� pour faire r�f�rence � l'objet en cours.
Une fois que vous avez d�fini un objet, vous pouvez en cr�er des instances avec l'instruction new.function pasta( grain, grain2, width, shape, shapenum, extent, egg ) { this.length = 7; // Nombre de propri�t�s de l'objet, celle-ci exclue. this.grain = grain; // Quelle c�r�ale est utilis�e? (cha�ne) this.grain2 = grain2; // Aucune autre farine utilis�e? (cha�ne) this.width = width; // Quelle est la largeur? (chiffre) this.shape = shape; // Quelle est la coupe transversale? (cha�ne) this.shapenum = shapenum; // S'agit-il d'une des formes enregistr�es? (chiffre) this.extent = extent; // Quelle est la longueur? (chiffre) this.egg = egg; // Des jaunes d'�ufs sont-ils utilis�s comme liant? (bool�en) }
Vous pouvez ajouter des propri�t�s � une instance d'un objet pour la modifier, sans qu'elles fassent partie de la d�finition de l'objet, ni qu'elles apparaissent dans les autres instances (� moins que vous ne les ayez ajout�es sp�cifiquement). Si vous voulez que les propri�t�s suppl�mentaires soient affect�es � toutes les instances de l'objet, vous devez les ajouter � la d�finition de celui-ci.var spaghetti = new pasta("bl�", "", 0.2, "cercle", 9, 30, true); var linguine = new pasta("bl�", "", 0.3, "ovale", 17, 30, true);
// Propri�t�s suppl�mentaires pour spaghetti. spaghetti.color = "jaune p�le"; spaghetti.drycook = 7; spaghetti.freshcook = 0.5; var chowFun = new pasta("riz", "", 3, "plate", , 12, false); /* La d�finition des objets chowFun, linguine et pasta ne poss�de pas les trois propri�t�s ajout�es � l'objet spaghetti. */Ajout de m�thodes � la d�finition
Il est possible d'inclure des m�thodes � la d�finition d'un objet. L'exemple suivant cr�e un objet comportant un tableau de cha�nes et une m�thode. La m�thode ajoute une cha�ne au tableau. Elle l'agrandit pour ce faire. Notez que cette m�thode rend chaque instance de l'objet extensible � l'infini.
� ce stade, le contenu du tableau est le suivant:function addItem(newItem) // D�finit une fonction pour agrandir la liste. { this.length += 1; // Incr�mente la taille du tableau. this[(this.length-1)] = newItem; // Ajoute le nouvel �l�ment et met � jour la num�rotation des �l�ments. } function shoppingList(firstItem) // D�finit un objet shoppinglist. { this.length = 2; // Nombre de propri�t�s de l'objet, celle-ci exclue. this.addItem = addItem; // Ajoute la fonction addItem comme m�thode. this[(this.length-1)] = firstItem; // Le premier �l�ment porte le num�ro 1. } var myList = new shoppingList("Lait"); myList.addItem("Oeufs"); // Utilise la m�thode pour ajouter des �ufs, qui deviennent l'�l�ment 2. myList.addItem("Fruits"); // Fruits devient l'�l�ment 3.
Notez que l'affectation des indices n'est pas n�cessairement telle que vous l'escompteriez si elle s'effectuait strictement de fa�on num�rique. Si vous appliquez une boucle for...in sur ce tableau, la boucle s'ex�cute dans l'ordre donn� ici, et la variable de boucle a pour valeur initiale "length" et non 0.
- myList[length] renvoie 4
- myList[addItem] correspond � la fonction addItem
- myList[1] renvoie Lait
- myList[2] renvoie Oeufs
- myList[3] renvoie Fruits