Points de connaissance :
(1) Bases orientées objet JS : ECMA-262 définit un objet comme : "Une collection d'attributs non ordonnés, dont les attributs peuvent contenir des valeurs de base, des objets ou des fonctions."
(2) Méthodes de création d'objets en JS :
(a) Modèle d'usine : utilisez des fonctions pour encapsuler les détails de la création d'objets avec une interface spécifique.
function createPerson(name, age, job){ var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function(){ alert(this.name); }; return o; } var person1 = createPerson(“Nicholas”, 29, “Software Engineer”); var person2 = createPerson(“Greg”, 27, “Doctor”);
Inconvénients : Bien que le modèle d'usine résolve le problème de la création de plusieurs objets familiers, il ne résout pas le problème de la reconnaissance des objets (c'est-à-dire comment connaître le type d'un objet).
(b) Modèle de constructeur : les constructeurs dans ECMAScript peuvent être utilisés pour créer des objets de types spécifiques. Vous pouvez créer des constructeurs personnalisés pour définir les propriétés et les méthodes des types d'objets personnalisés.
function Person(name, age, job){ this.name = name; this.age = age; this.job = job; this.sayName = function(){ alert(this.name); }; } var person1 = new Person(“Nicholas”, 29, “Software Engineer”); var person2 = new Person(“Greg”, 27, “Doctor”);
Inconvénients : Le principal problème avec l'utilisation des constructeurs est que chaque méthode doit être recréée sur chaque instance. N'oubliez pas que les fonctions dans ECMAScript sont des objets, donc chaque fois que vous définissez une fonction,
, vous instanciez un objet.
(c) Modèle de prototype : chaque fonction que nous créons a un attribut de prototype, qui est un pointeur pointant vers un objet, et le but de cet objet est de contenir tous les objets qui peuvent être représentés par un type spécifique
Propriétés et méthodes partagées par les instances. L'avantage d'utiliser un objet prototype est que tous les objets peuvent partager les propriétés et les méthodes qu'il contient. Inconvénients : Toutes les propriétés du prototype sont partagées par de nombreuses instances. Ce type de partage est très adapté aux fonctions. Mais pour les propriétés avec des valeurs de type référence, le problème est plus important.
function Person(){ } Person.prototype.name = “Nicholas”; Person.prototype.age = 29; Person.prototype.job = “Software Engineer”; Person.prototype.sayName = function(){ alert(this.name); }; var person1 = new Person(); person1.sayName(); //”Nicholas” var person2 = new Person(); person2.sayName(); //”Nicholas” alert(person1.sayName == person2.sayName); //true
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!