Maison interface Web js tutoriel 基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解_javascript技巧

基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解_javascript技巧

May 16, 2016 pm 05:34 PM
构造函数

构造函数、原型实现继承的缺陷

首先来分析构造函数和原型链两种实现继承方式的缺陷:

构造函数(对象冒充)的主要问题是必须使用构造函数方式,且无法继承通过原型定义的方法,这不是最好的选择。不过如果使用原型链,就无法使用带参数的构造函数了。开发者如何选择呢?答案很简单,两者都用。

构造函数+原型混合方式

这种继承方式使用构造函数定义类,并非使用任何原型。创建类的最好方式是用构造函数定义属性,用原型定义方法。这种方式同样适用于继承机制,用对象冒充继承构造函数的属性,用原型链继承 prototype 对象的方法。用这两种方式重写前面的例子,代码如下:

复制代码 代码如下:

function ClassA(sColor) {
    this.color = sColor;
}

ClassA.prototype.sayColor = function () {
    alert(this.color);
};

function ClassB(sColor, sName) {
    ClassA.call(this, sColor);
    this.name = sName;
}

ClassB.prototype = new ClassA();

ClassB.prototype.sayName = function () {
    alert(this.name);
};


在此例子中,继承机制由两行突出显示的蓝色代码实现。在第一行突出显示的代码中,在 ClassB 构造函数中,用对象冒充继承 ClassA 类的 sColor 属性。在第二行突出显示的代码中,用原型链继承 ClassA 类的方法。由于这种混合方式使用了原型链,所以 instanceof 运算符仍能正确运行。

下面的例子测试了这段代码:
复制代码 代码如下:

var objA = new ClassA("blue");
var objB = new ClassB("red", "John");
objA.sayColor();    //输出 "blue"
objB.sayColor();    //输出 "red"
objB.sayName();    //输出 "John"

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Constructeur en Python Constructeur en Python Sep 02, 2023 pm 04:29 PM

En Python, chaque classe possède un constructeur, qui est une méthode spéciale spécifiée à l’intérieur de la classe. Le constructeur/initialiseur sera appelé automatiquement lorsqu'un nouvel objet est créé pour la classe. Lorsqu'un objet est initialisé, le constructeur attribue des valeurs aux données membres de la classe. Il n'est pas nécessaire de définir explicitement le constructeur. Mais pour créer un constructeur, nous devons suivre les règles suivantes : - Pour une classe, il est permis de n'avoir qu'un seul constructeur. Le nom du constructeur doit être __init__. Les constructeurs doivent être définis à l'aide de propriétés d'instance (spécifiez simplement le mot-clé self comme premier argument). Il ne peut renvoyer aucune valeur sauf Aucune. Syntaxe classA():def__init__(self):pass Exemple Considérons l'exemple suivant et

Erreur de syntaxe C++ : Le constructeur défini en dehors de la classe doit être ajouté avec le nom de la classe comme qualificatif. Comment le corriger ? Erreur de syntaxe C++ : Le constructeur défini en dehors de la classe doit être ajouté avec le nom de la classe comme qualificatif. Comment le corriger ? Aug 22, 2023 pm 02:00 PM

C++ est un langage de programmation orienté objet largement utilisé lors de la définition d'un constructeur de classe en C++, si vous souhaitez placer la définition du constructeur en dehors de la classe, vous devez ajouter le nom de la classe comme qualificatif à la définition du constructeur. Pour spécifier à quelle classe appartient ce constructeur. Il s'agit d'une règle de base de la syntaxe C++. Si cette règle n'est pas respectée lors de la définition du constructeur d'une classe, une erreur de compilation apparaîtra, indiquant "Les constructeurs définis en dehors de la classe doivent être qualifiés avec le nom de la classe". Donc, si vous rencontrez ce genre d'erreur de compilation, vous devriez

Le langage Go a-t-il des constructeurs ? Le langage Go a-t-il des constructeurs ? Jan 10, 2023 pm 02:15 PM

Le langage Go n'a pas de constructeurs. Le langage Go, en tant que langage structuré, n'a pas de constructeurs dans les langages orientés objet. Cependant, des effets similaires des constructeurs dans les langages orientés objet peuvent être obtenus de certaines manières, c'est-à-dire en utilisant le processus d'initialisation de la structure pour simuler le. mise en œuvre des constructeurs.

Qu'est-ce qu'un constructeur ? Explication détaillée des constructeurs en JavaScript Qu'est-ce qu'un constructeur ? Explication détaillée des constructeurs en JavaScript Aug 04, 2022 pm 03:22 PM

En tant que base des prototypes et des chaînes de prototypes, une première compréhension du constructeur et de son processus d'exécution peut mieux nous aider à acquérir des connaissances sur les prototypes et les chaînes de prototypes. Cet article vous amènera à en savoir plus sur le constructeur en JavaScript et à vous présenter comment utiliser le constructeur pour créer un objet js. J'espère qu'il vous sera utile !

Erreur C++ : Le constructeur doit être déclaré dans l'espace public, comment y faire face ? Erreur C++ : Le constructeur doit être déclaré dans l'espace public, comment y faire face ? Aug 21, 2023 pm 08:26 PM

En programmation C++, le constructeur est une fonction importante utilisée pour initialiser les variables membres d'une classe. Il est automatiquement appelé lors de la création d'un objet pour garantir une initialisation correcte de l'objet. Le constructeur doit être déclaré dans la classe, mais vous rencontrerez parfois le message d'erreur « Le constructeur doit être déclaré dans la zone publique ». Cette erreur est généralement causée par des modificateurs d'accès incorrects sur le constructeur. En C++, les variables membres et les fonctions membres d'une classe ont un modificateur d'accès, notamment public, privé et protégé.

Erreur de syntaxe C++ : Un constructeur avec un seul paramètre doit être déclaré explicite. Comment la résoudre ? Erreur de syntaxe C++ : Un constructeur avec un seul paramètre doit être déclaré explicite. Comment la résoudre ? Aug 22, 2023 am 09:01 AM

En programmation C++, vous pouvez rencontrer le message d'erreur suivant : Les constructeurs avec un seul paramètre doivent être déclarés explicites. Ce message d'erreur peut dérouter les débutants. Voyons ensuite ce qu'est explicite en C++, les raisons pour lesquelles ce message d'erreur apparaît et comment résoudre ce problème. Le rôle de l'explicit en C++, si on définit un constructeur qui ne reçoit qu'un seul paramètre, alors il faut utiliser le mot clé explicit

Erreur de syntaxe C++ : La même signature constructeur apparaît plusieurs fois, comment la résoudre ? Erreur de syntaxe C++ : La même signature constructeur apparaît plusieurs fois, comment la résoudre ? Aug 22, 2023 pm 04:49 PM

Le C++ est un langage de programmation puissant, mais il est inévitable de rencontrer divers problèmes lors de son utilisation. Parmi eux, la même signature de constructeur apparaissant plusieurs fois est une erreur de syntaxe courante. Cet article explique les causes et les solutions à cette erreur. 1. Cause de l'erreur En C++, le constructeur est utilisé pour initialiser les données membres de l'objet lors de la création de l'objet. Cependant, si la même signature de constructeur est définie dans la même classe (c'est-à-dire que les types et l'ordre des paramètres sont identiques), le compilateur ne peut pas déterminer quel constructeur appeler, ce qui provoque une erreur de compilation. Par exemple,

Parlons de la façon d'utiliser la fonction Object() pour créer des objets en JavaScript Parlons de la façon d'utiliser la fonction Object() pour créer des objets en JavaScript Aug 04, 2022 pm 04:32 PM

Comment créer des objets à l'aide de la fonction Object() ? L'article suivant vous présentera la méthode de création d'objets à l'aide du constructeur Object() (avec trois autres méthodes de création d'objets, j'espère qu'il vous sera utile !)

See all articles