JavaScript est basé sur des objets et n'importe quel élément peut être considéré comme un objet. Cependant, les types et les objets sont différents. Dans cet article, en plus de discuter de certaines caractéristiques des types et des objets, nous étudions plus important encore comment écrire des types bons et réutilisables. Après tout, si JavaScript, un langage de script populaire, peut être bien encapsulé et former une énorme bibliothèque de types, il sera très utile pour sa réutilisation.
Il existe de nombreux articles sur les prototypes sur Internet, mais je n'ai jamais compris l'idée de base. Finalement, après avoir écrit de nombreux exemples de code, j'ai réalisé : le prototype ne peut être utilisé que sur les types.
Voici quelques exemples sur les types et les objets. Après avoir lu les exemples, il vous sera peut-être plus facile de comprendre le lien entre les types et les objets :
Exemple de code | illustrer | |
1 | Objet.prototype.Property = 1 ; Object.prototype.Method = function (){ alert(1);}var obj = new Object();alert(obj.Property);obj.Method(); | Vous pouvez utiliser des proptotypes sur les types pour ajouter un comportement au type. Ces comportements ne peuvent se manifester que sur des instances du type. Les types autorisés dans JS sont Array, Boolean, Date, Enumerator, Error, Function, Number, Object, RegExp, String. |
2 | var obj = nouvel objet (); obj.prototype.Property = 1;//Erreur//Errorobj.prototype.Method = function(){ alert(1);} | Vous ne pouvez pas utiliser de prototype sur une instance, sinon une erreur de compilation se produira. |
3 | Object.Property = 1;Object.Method = function(){ alert(1);}alert(Object.Property);Object.Method(); | Vous pouvez définir des propriétés et méthodes « statiques » pour un type et les appeler directement sur le type. |
4 | Object.Property = 1;Object.Method = function(){ alert(1);}var obj = new Object();alert(obj.Property);//Errorobj.Method();//Erreur | Une instance ne peut pas appeler des propriétés statiques ou des méthodes d'un type, sinon une erreur d'objet non définie se produit. |
5 | function Aclass(){this.Property = 1;this.Method = function(){ alert(1);}}var obj = new Aclass();alert(obj.Property);obj.Method(); | Cet exemple montre la manière habituelle de définir un type en JavaScript |
6 | function Aclass(){this.Property = 1;this.Method = function(){ alert(1);}}Aclass.prototype.Property2 = 2;Aclass.prototype.Method2 = function{ alert(2);}var obj = new Aclass();alert(obj.Property2);obj.Method2(); | Les prototypes peuvent être utilisés en externe pour ajouter des propriétés et des méthodes aux types personnalisés. |
7 | function Aclass(){this.Property = 1;this.Method = function(){ alert(1);}}Aclass.prototype.Property = 2;Aclass.prototype.Method = function{ alert(2);}var obj = new Aclass();alert(obj.Property);obj.Method(); | Les propriétés ou méthodes d'un type personnalisé ne peuvent pas être modifiées en externe via le prototype. Comme vous pouvez le voir sur cet exemple : les propriétés et méthodes appelées sont toujours les résultats de la définition initiale. |
8 | function Aclass(){this.Property = 1;this.Method = function(){ alert(1);}}var obj = new Aclass();obj.Property = 2;obj.Method = function(){ alert( 2);}alerte(obj.Property);obj.Method(); | Les propriétés peuvent être modifiées sur les objets. (C'est sûr) Vous pouvez également changer de méthode sur l'objet. (Différent du concept commun orienté objet) |
9 | function Aclass(){this.Property = 1;this.Method = function(){ alert(1);}}var obj = new Aclass();obj.Property2 = 2;obj.Method2 = function(){ alert( 2);}alerte(obj.Property2);obj.Method2(); | Vous pouvez ajouter des propriétés ou des méthodes aux objets |
10 | function AClass(){ this.Property = 1; this.Method = function() { alert(1); }}function AClass2(){ this.Property2 = 2; this.Method2 = function() { alert(2); }}AClass2.prototype = nouveau AClass();var obj = nouveau AClass2();alerte(obj.Property);obj.Method();alerte(obj.Property2);obj.Method2(); | Cet exemple illustre comment un type hérite d’un autre type. |
11 | function AClass(){ this.Property = 1; this.Method = function() { alert(1); }}function AClass2(){ this.Property2 = 2; this.Method2 = function() { alert(2); }}AClass2.prototype = new AClass();AClass2.prototype.Property = 3;AClass2.prototype.Method = function(){ alert(4);}var obj = new AClass2();alert(obj.Property);obj.Method(); | Cet exemple illustre comment une sous-classe peut remplacer les propriétés ou les méthodes d'une classe parent. |
・Exemple 2 : Restrictions sur l'utilisation d'un prototype
・Exemple 3 : Comment définir des membres statiques sur un type
・Exemple 7 : restrictions de prototype sur les membres de types redéfinis
・Exemple 10 : Comment faire en sorte qu'un type hérite d'un autre type
・Exemple 11 : Comment redéfinir les membres de la classe parent dans la sous-classe
Les fonctionnalités orientées objet que JavaScript peut implémenter incluent :
・Champ public
・Méthode publique
・Champ privé
・Méthode privée (champ privé)
・Surcharge de méthodes
·Constructeur
·Événement
・Héritage unique
・La sous-classe remplace les attributs ou les méthodes de la classe parent (remplacement)
・ Propriétés ou méthodes statiques (membre statique)