Beaucoup de mes amis sont des développeurs C # ou C ++. Ils ont l'habitude d'utiliser l'héritage dans leurs projets et lorsqu'ils veulent apprendre ou découvrir JavaScript, l'une des premières questions qu'ils se posent est la suivante: «Mais comment puis-je effectuer l'héritage avec JavaScript?
En réalité, JavaScript utilise une approche différente de C # ou C ++ pour créer un langage orienté objet. C'est un à base de prototype la langue. Le concept de prototypage implique que le comportement peut être réutilisé par clonage existant objets qui servent de prototypes. Chaque objet en JavaScript dépend d'un prototype qui définit un ensemble de fonctions et de membres que l'objet peut utiliser. Il n'y a pas d'objets de classe juste. Chaque objet peut alors être utilisé comme prototype pour un autre objet.
Ce concept est extrêmement flexible et nous pouvons l’utiliser pour simuler certains concepts de la programmation orientée objet, tels que l’héritage..
Regardons ce que nous voulons créer avec cette hiérarchie en utilisant JavaScript:
Tout d'abord, nous pouvons créer Classe A
facilement. Comme il n’existe pas de classes explicites, nous pouvons définir un ensemble de comportements (Une classe donc…) en créant simplement une fonction comme celle-ci:
var ClassA = function () this.name = "class A";
Cette "classe" peut être instanciée en utilisant le Nouveau
mot-clé:
var a = new ClassA (); ClassA.prototype.print = function () console.log (this.name);
Et pour l'utiliser en utilisant notre objet:
un imprimé();
Assez simple, droit?
L'échantillon complet ne compte que huit lignes:
var ClassA = function () this.name = "class A"; ClassA.prototype.print = function () console.log (this.name); var a = new ClassA (); un imprimé();
Ajoutons maintenant un outil pour créer un «héritage» entre les classes. Cet outil devra simplement faire une seule chose: cloner le prototype.
var inheritsFrom = fonction (enfant, parent) child.prototype = Object.create (parent.prototype); ;
C'est exactement où la magie se produit! En clonant le prototype, nous transférons tous les membres et fonctions à la nouvelle classe..
Donc, si nous voulons ajouter une deuxième classe qui sera l'enfant du premier, nous devons simplement utiliser ce code:
var ClassB = function () this.name = "class B"; this.surname = "Je suis l'enfant"; inheritsFrom (ClassB, ClassA);
Puis parce que ClassB
hérité du impression
fonction de Classe A
, le code suivant fonctionne:
var b = new ClassB (); b.print ();
Et produit la sortie suivante:
classe B
Nous pouvons même remplacer la impression
fonction pour ClassB
:
ClassB.prototype.print = function () ClassA.prototype.print.call (this); console.log (this.surname);
Dans ce cas, la sortie produite ressemblera à ceci:
classe B je suis l'enfant
Le truc ici est d'appeler ClassA.prototype
obtenir la base impression
une fonction. Puis grâce au appel
fonction, nous pouvons appeler la fonction de base sur l'objet en cours (ce
).
En créant Classe c
est maintenant évident:
var ClassC = function () this.name = "class C"; this.surname = "je suis le petit-fils"; inheritsFrom (ClassC, ClassB); ClassC.prototype.foo = function () // Faites des trucs géniaux ici… ClassC.prototype.print = function () ClassB.prototype.print.call (this); console.log ("On dirait que ça marche!"); var c = new ClassC (); c.print ();
Et le résultat est:
classe C je suis le petit-fils On dirait que cela fonctionne!
Cela vous surprendra peut-être un peu, mais Microsoft propose un grand nombre d’apprentissage gratuit sur de nombreuses rubriques JavaScript open source et nous avons pour mission de créer beaucoup plus avec Microsoft Edge. Découvrez moi-même:
Ou la série d'apprentissage de notre équipe:
Et quelques outils gratuits: Communauté Visual Studio, Azure Trial et outils de test multi-navigateurs pour Mac, Linux ou Windows..
Pour conclure, je veux juste indiquer clairement que JavaScript n'est pas du C # ou du C ++. Il a son propre philosophie. Si vous êtes un développeur C ++ ou C # et que vous souhaitez vraiment profiter de toute la puissance de JavaScript, le meilleur conseil que je puisse vous donner est: N'essayez pas de répliquer votre langage en JavaScript. Il n'y a pas de meilleure ou de pire langue. Juste des philosophies différentes!
Cet article fait partie de la série Web de développement Web de Microsoft. Nous sommes ravis de partager Microsoft Edge et le nouveau Moteur de rendu EdgeHTML avec toi. Obtenez des machines virtuelles gratuites ou testez à distance sur votre appareil Mac, iOS, Android ou Windows @ http://dev.modern.ie/.
Apprendre JavaScript: le guide complet
Nous avons créé un guide complet pour vous aider à apprendre le JavaScript, que vous soyez débutant en tant que développeur Web ou que vous souhaitiez explorer des sujets plus avancés..