Le langage Java est un langage typé statiquement. En raison d'une vérification de type stricte lors de la compilation du code, les variables ne peuvent pas se voir attribuer des valeurs de types différents. Cette vérification de type rendra le code rigide, mais Java peut également avoir un effet de polymorphisme. être obtenu par héritage (l'héritage d'implémentation et l'héritage d'interface peuvent être obtenus par transformation vers le haut).
La véritable signification du polymorphisme est que la même opération, agissant sur différents objets, peut produire différentes interprétations et différents résultats d'exécution. Le type variable de JavaScript est variable au moment de l'exécution, ce qui signifie que le polymorphisme des objets JavaScript est inhérent.
L'image suivante l'explique :
Le maître donne l'ordre "crier" au poulet et au canard en même temps. Le poulet et le canard crient en même temps, mais. leur Le cri est différent.
Nous utilisons du code pour démontrer cet exemple :
Dans le code traditionnel, nous avons l'habitude d'utiliser if else pour empiler du code codé en dur, mais si cet objet le maintenir entraînera un ajout continu de code, il est toujours dangereux de modifier le code, plus vous modifiez d'endroits, plus le risque d'erreurs de programme est grand. Et lorsqu'il y a plus de types d'animaux, cela provoquera. sinon Il est entassé dans une fonction énorme, ce qui n'est pas propice à la maintenance.
var makeSound = function(animal) { if (animal instanceof Dog) { console.log('wanwan'); } else if(animal instanceof Cat) { console.log('miaomiao'); } } var Dog = function() {} var Cat = function() {} makeSound(new Dog()); makeSound(new Cat());
Le code modifié est le suivant :
var makeSound = function(animal) { animal.sound(); } var Dog = function() {} Dog.prototype.sound = function(){ console.log('wanwan'); } var Cat = function() {} Cat.prototype.sound = function() { console.log('miaomiao'); } makeSound(new Dog()); makeSound(new Cat());
Comment comprendre que si l'objet ne peut pas répondre à une requête, il déléguera la requête au prototype de son constructeur, this Le principe est l'essence de l'héritage prototypique. Voici un morceau de code :
var obj = {name:'lin'};
var A = function() {};
A.prototype = obj;
var a = new A();
console.log(a.name);
Explication : Parcourir tous les attributs de l'objet a, L'attribut name n'a pas été trouvé
La demande de recherche de l'attribut name est déléguée au prototype du constructeur de l'objet a, qui est enregistré par a._proto_ et pointe vers A.prototype,
et A. prototype est défini sur object obj
Recherchez l'attribut name dans l'objet obj et renvoyez-le.
Recommandations associées :
Notes sur la structure du langage JavaScript (1)_Connaissances de base
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!