


Explication détaillée de la façon de définir des instances de classe en JavaScript via des fonctions
Illustrons d'abord avec un exemple :
function myClass() { var id = 1; var name = "johnson"; //properties this.ID = id; this.Name = name; //method this.showMessage = function() { alert("ID: " + this.ID + ", Name: " + this.Name); } } var obj1 = new myClass(); var obj2 = new myClass();
La définition de la fonction est en fait équivalente au constructeur de la classe, et les deux dernières phrases servent à créer une instance de celle-ci classe. Analysons d'abord la première phrase : var obj1 = new myClass(); Lors de l'utilisation de new pour créer une instance d'une classe, l'interpréteur créera d'abord un objet vide. Exécutez ensuite cette fonction myClass et pointez ce pointeur vers une instance de cette classe. Lorsque vous rencontrez this.ID = id; and this.Name = name; and this.showMessage = function(){...}, ces deux propriétés et cette méthode seront créées, et les variables id et name seront la définition de la fonction de niveau valeur est affectée à ces deux propriétés et à cet objet fonction (shwoMessage). Ce processus équivaut à l'initialisation de l'objet, similaire au constructeur en C#. Enfin, new renvoie cet objet. Regardez la deuxième phrase : var obj2 = new myClass(); Le processus d'exécution est le même que la phrase précédente, c'est-à-dire créer un objet vide, puis exécuter la fonction myClass et définir deux attributs et une méthode.
Comme le montre l'analyse ci-dessus, la manière ci-dessus d'implémenter une classe consiste à définir les méthodes d'attribut de la classe dans la définition de la fonction. Il y a des inconvénients. Si deux instances ou plus de cette classe doivent être créées, comme indiqué ci-dessus, ces propriétés seront créées plusieurs fois.
Alors comment éviter cette situation ? Le prototype est un prototype comme son nom. Chaque fonction a un sous-objet prototype, qui représente en fait la collection de membres de cet objet fonction ici, nous pouvons dire que le prototype est en fait la classe A. ensemble de membres. Les propriétés et méthodes définies par le prototype sont exécutées avant l'exécution du constructeur de la fonction, donc avant qu'un objet ne soit nouveau, les membres du prototype ont effectivement été exécutés. Regardons d'abord un exemple : la structure de la classe
function myClass() { //构造函数 } myClass.prototype = { ID: 1, Name: "johnson", showMessage: function() { alert("ID: " + this.ID + ", Name: " + this.Name); } } var obj1 = new myClass(); var obj2 = new myClass();
est toujours la même que l'exemple précédent, mais ici elle est implémentée à l'aide d'un prototype. Examinons d'abord les deux dernières phrases. Comme mentionné précédemment, prototype est exécuté avant le constructeur de la fonction, c'est-à-dire avant que var obj1 = new myClass(); cette classe ait déjà un ID, un attribut Name et une méthode showMessage. Lorsque l'exécuteur écrit une phrase, le processus d'exécution est le suivant. Notez la comparaison avec l'exemple précédent : créez d'abord un objet vide et pointez le pointeur this vers cet objet. Affectez ensuite tous les membres de l'objet prototype de la fonction à cet objet (notez que ces membres ne sont pas recréés). Exécutez ensuite le corps de la fonction. Enfin, new renvoie cet objet. Lors de l'exécution de la phrase suivante : ce processus est également exécuté et ces membres ne seront pas créés à plusieurs reprises.
Le code ci-dessus n'est qu'un exemple. Dans les projets réels, il peut y avoir un grand nombre de membres dans la classe et un grand nombre d'instances peuvent devoir être créées. Ce prototype montrera sa supériorité. De plus, le code ci-dessus utilise la syntaxe des accolades pour définir les membres du prototype, afin que le code paraisse plus clair. Il s’agit d’un modèle de conception de classe recommandé. Bien sûr, dans de nombreux projets, nous pouvons trouver de meilleurs modèles. Nous espérons également avoir des modèles de programmation JavaScript plus optimisés pour continuer à en introduire de nouveaux. Nous espérons également qu'au fil du temps, tous les principaux navigateurs standardiseront également l'analyse JavaScript. .
Comme mentionné ci-dessus, les membres définis par prototype apparaissent avant le constructeur. Il peut être prouvé que dans l'exemple ci-dessus, le constructeur est vide. Ajoutez un alert(this.Name); var obj1 = new myClass();, vous verrez une boîte de dialogue contextuelle affichant les valeurs d'attribut correctes.
Le code suivant :
function subClass(){ } subClass.prototype = { Name: "sub" } function myClass() { //构造函数 } myClass.prototype = { ID: 1, Name: "johnson", SubObj: new subClass(), showMessage: function() { alert("ID: " + this.ID + ", Name: " + this.Name + "SubObj.Name:" + this.SubObj.Name); } } var obj1 = new myClass(); obj1.SubObj.Name = "XXX"; obj1.showMessage(); var obj2 = new myClass(); obj2.showMessage();
Ici, un type de référence est défini dans myClass, son type est une classe subClass que nous avons personnalisée, et il y a un attribut Name dans cette sous-classe. Puisque l'objet prototype est partagé, selon notre analyse ci-dessus : lors de l'exécution de var obj1 = new myClass();, les membres du prototype de myClass seront copiés dans cette instance obj1. Mais SubObj est ici un type de référence. Lorsque var obj2 = new myClass(); est exécuté, les membres ID et Name du prototype seront copiés dans obj2, mais l'attribut SubObj ne sera pas copié, mais sera référencé dans le prototype. . SubObj, donc parce que la phrase précédente a modifié la valeur de obj1.Subobj.Name, lors de l'utilisation de new pour générer une instance obj2, la valeur modifiée est référencée.
Ainsi, lorsque vous utilisez prototype pour définir une classe, vous devez toujours définir les attributs dans le constructeur et définir les méthodes sur le prototype du constructeur. Comme suit :
function myClass(id, name) { this.ID = id; this.Name = name; } myClass.prototype = { showMessage: function() { alert("ID: " + this.ID + ", Name: " + this.Name); }, showMessage2: function() { alert("Method2"); } } var obj1 = new myClass(1, "johnson"); obj1.showMessage(); obj1.Name="John"; obj1.showMessage(); var obj2 = new myClass(2, "Amanda"); obj2.showMessage();
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

La technologie de détection et de reconnaissance des visages est déjà une technologie relativement mature et largement utilisée. Actuellement, le langage d'application Internet le plus utilisé est JS. La mise en œuvre de la détection et de la reconnaissance faciale sur le front-end Web présente des avantages et des inconvénients par rapport à la reconnaissance faciale back-end. Les avantages incluent la réduction de l'interaction réseau et de la reconnaissance en temps réel, ce qui réduit considérablement le temps d'attente des utilisateurs et améliore l'expérience utilisateur. Les inconvénients sont les suivants : il est limité par la taille du modèle et la précision est également limitée ; Comment utiliser js pour implémenter la détection de visage sur le web ? Afin de mettre en œuvre la reconnaissance faciale sur le Web, vous devez être familier avec les langages et technologies de programmation associés, tels que JavaScript, HTML, CSS, WebRTC, etc. Dans le même temps, vous devez également maîtriser les technologies pertinentes de vision par ordinateur et d’intelligence artificielle. Il convient de noter qu'en raison de la conception du côté Web

La clé primaire composite dans MySQL fait référence à la clé primaire composée de plusieurs champs dans la table, qui est utilisée pour identifier de manière unique chaque enregistrement. Contrairement à une clé primaire unique, une clé primaire composite est formée en combinant les valeurs de plusieurs champs. Lors de la création d'une table, vous pouvez définir une clé primaire composite en spécifiant plusieurs champs comme clés primaires. Afin de démontrer la définition et la fonction des clés primaires composites, nous créons d'abord une table nommée utilisateurs, qui contient trois champs : id, nom d'utilisateur et email, où id est une clé primaire et un utilisateur auto-incrémentés.

"Explorer Discuz : définition, fonctions et exemples de code" Avec le développement rapide d'Internet, les forums communautaires sont devenus une plate-forme importante permettant aux gens d'obtenir des informations et d'échanger des opinions. Parmi les nombreux systèmes de forum communautaire, Discuz, en tant que logiciel de forum open source bien connu en Chine, est favorisé par la majorité des développeurs et administrateurs de sites Web. Alors, qu’est-ce que Discuz ? Quelles fonctions a-t-il et comment peut-il aider notre site Web ? Cet article présentera Discuz en détail et joindra des exemples de code spécifiques pour aider les lecteurs à en savoir plus.

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

Avec le développement rapide de la finance sur Internet, l'investissement en actions est devenu le choix de plus en plus de personnes. Dans le trading d'actions, les graphiques en bougies sont une méthode d'analyse technique couramment utilisée. Ils peuvent montrer l'évolution des cours des actions et aider les investisseurs à prendre des décisions plus précises. Cet article présentera les compétences de développement de PHP et JS, amènera les lecteurs à comprendre comment dessiner des graphiques en bougies boursières et fournira des exemples de code spécifiques. 1. Comprendre les graphiques en bougies boursières Avant de présenter comment dessiner des graphiques en bougies boursières, nous devons d'abord comprendre ce qu'est un graphique en bougies. Les graphiques en chandeliers ont été développés par les Japonais

Introduction à l'interface PHP et à sa définition. PHP est un langage de script open source largement utilisé dans le développement Web. Il est flexible, simple et puissant. En PHP, une interface est un outil qui définit des méthodes communes entre plusieurs classes, réalisant le polymorphisme et rendant le code plus flexible et réutilisable. Cet article présentera le concept des interfaces PHP et comment les définir, et fournira des exemples de code spécifiques pour démontrer leur utilisation. 1. Concept d'interface PHP L'interface joue un rôle important dans la programmation orientée objet, définissant l'application de classe

La relation entre js et vue : 1. JS comme pierre angulaire du développement Web ; 2. L'essor de Vue.js en tant que framework front-end ; 3. La relation complémentaire entre JS et Vue ; Vue.

Que sont les caractères pleine chasse ? Dans les systèmes de codage informatique, les caractères double largeur sont une méthode de codage de caractères qui occupe deux positions de caractères standard. De manière correspondante, la méthode de codage de caractères qui occupe une position de caractère standard est appelée caractère demi-chasse. Les caractères pleine chasse sont généralement utilisés pour la saisie, l'affichage et l'impression de caractères chinois, japonais, coréens et autres caractères asiatiques. Dans les méthodes de saisie et d'édition de texte chinoises, les scénarios d'utilisation des caractères pleine chasse et des caractères demi-chasse sont différents. Utilisation de caractères pleine chasse Méthode de saisie chinoise : Dans la méthode de saisie chinoise, les caractères pleine chasse sont généralement utilisés pour saisir des caractères chinois, tels que des caractères chinois, des symboles, etc.
