Héritage du constructeurCet article traite des approches d'héritage dans ES5, en se concentrant sur trois méthodes principales : l'héritage basé sur des prototypes, l'héritage de constructeur et l'héritage parasite. L'article explique les avantages et les inconvénients de chaque approche, en fournissant du code ex. en ES5. Cela implique de créer une classe de base (parente), puis de la « sous-classer » en créant de nouveaux objets qui héritent des propriétés et des méthodes de la classe de base. Cela se fait en manipulant la propriété
__proto__
des objets de la sous-classe.<code class="javascript">const Animal = { eat() { console.log("Eating..."); } }; const Dog = { __proto__: Animal, bark() { console.log("Woof!"); } }; const myDog = Object.create(Dog); myDog.eat(); // logs "Eating..." myDog.bark(); // logs "Woof!"</code>Copier après la connexion
Cette approche implique la création d'une fonction constructeur de classe de base, puis son extension en définissant une nouvelle fonction constructeur qui prend la base constructeur de classe comme argument et ajoute des propriétés et des méthodes supplémentaires.
<code class="javascript">function Animal() { this.eat = function() { console.log("Eating..."); } } function Dog(name) { Animal.call(this); this.name = name; this.bark = function() { console.log("Woof!"); } } const myDog = new Dog("Luna"); myDog.eat(); // logs "Eating..." myDog.bark(); // logs "Woof!"</code>
Cette approche implique la création d'un objet temporaire qui hérite de la classe de base, puis utilise cet objet pour créer la sous-classe souhaitée. C'est similaire à l'héritage basé sur un prototype, mais au lieu de modifier la propriété __proto__
, il crée un nouvel objet qui agit comme un pont entre la classe de base et la sous-classe.
<code class="javascript">const Animal = { eat() { console.log("Eating..."); } }; const Dog = (function() { function AnimalProxy() {} AnimalProxy.prototype = Animal; const proxy = new AnimalProxy(); proxy.bark = function() { console.log("Woof!"); } return proxy; })(); const myDog = Object.create(Dog); myDog.eat(); // logs "Eating..." myDog.bark(); // logs "Woof!"</code>
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!