Comprendre la vision de JavaScript de la programmation orientée objet peut prêter à confusion, en particulier en ce qui concerne la propriété constructeur. De nombreuses personnes remettent en question son utilité étant donné son manque apparent d'impact.
La propriété constructor n'affecte pas directement le comportement du programme mais fournit des informations sur la fonction utilisée pour créer un objet avec le nouvel opérateur. Dans l'exemple fourni :
function Foo(age) { this.age = age; } function Bar() { Foo.call(this, 42); this.name = "baz"; } Bar.prototype = Object.create(Foo.prototype); var b = new Bar; alert(b.constructor); // "Foo". alert(b.name); // "baz". alert(b.age); // "42".
L'objet b hérite correctement de la propriété age de Foo. Cependant, la suggestion de définir Bar.prototype.constructor = Bar peut survenir car :
La propriété prototype définit le comportement de recherche pour les propriétés introuvables dans un objet. La propriété x.__proto__ pointe vers l'objet prototype de l'objet x. Dans l'exemple ci-dessus, x__proto__ = Bar.prototype.
Maintenant, abordons la question de savoir pourquoi définir manuellement Bar.prototype.constructor = Bar :
Ce L'action permet à l'objet Bar.prototype d'assumer l'identité de Bar plutôt que de Foo. La logique est d'émuler un comportement de recherche de type similaire aux modèles d'héritage classiques.
Cependant, les experts déconseillent de s'appuyer fortement sur les concepts d'héritage en JavaScript. Pensez plutôt à utiliser des interfaces et des mixins. De plus, la vérification des propriétés plutôt que des types peut éviter toute confusion.
En comprenant le rôle des propriétés du constructeur et du prototype, les programmeurs peuvent naviguer efficacement dans les capacités de programmation orientée objet de JavaScript.
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!