


Introduction aux trois caractéristiques de base du javascript orienté objet
Les étudiants qui ont appris l'orientation objet devraient tous savoir que les trois caractéristiques de base de l'orientation objet sont : l'encapsulation, l'héritage et le polymorphisme, mais ils ne savent peut-être pas grand-chose sur ces trois mots. Pour le front-end, les plus exposés peuvent être 封装
et 继承
, mais le polymorphisme n'est peut-être pas aussi compris.
Emballage
Avant de parler d'emballage, comprenons d'abord ce qu'est l'emballage ?
Qu'est-ce que l'encapsulation
Encapsulation : Encapsuler les ressources nécessaires à l'exécution de l'objet dans l'objet programme - basique Ci-dessus, vous trouverez les méthodes et les données. Un objet "expose son interface". D'autres objets attachés à ces interfaces peuvent utiliser cet objet sans se soucier des méthodes implémentées par l'objet. Le concept est « ne me dites pas comment vous faites, faites-le ». Un objet peut être considéré comme un atome autonome. L'interface objet comprend des méthodes publiques et des données d'initialisation. (Extrait de l'Encyclopédie Baidu)
Ma compréhension de l'encapsulation, il peut y avoir une autre étape qui est 抽离
Tout d'abord, vous devez être clair sur les méthodes d'attribut que vous devez séparer d'une paire de codes. Avec ceux-ci comme base Ce n'est qu'ainsi que l'emballage pourra être mieux réalisé.
L'encapsulation n'est rien d'autre que l'encapsulation de ses propriétés et méthodes.
Classe : encapsule les propriétés et le comportement des objets
Méthode : encapsule des fonctions logiques spécifiques
Encapsulation d'accès : L'encapsulation de modification d'accès n'est rien d'autre que d'encapsuler ses droits d'accès
class Employees { constructor(name,age){ this.name = name; this.age = age; } getInfo(){ let {name,age} = this; return {name,age}; } static seyHi(){ console.log("Hi"); } } let lisi = new Employees("Aaron",18); lisi.seyHi(); // lisi.seyHi is not a function lisi.getInfo(); // {name: "Aaron", age: 18} Employees.seyHi(); // Hi
Les attributs publics extraits dans Employees
sont name
, age
, et les méthodes publiques sont getInfo
,seyHi
, cependant, la différence entre getInfo
et seyHi
est que seyHi
utilise le modificateur static
, le changeant en méthode statique seyHi
n'appartient qu'à la classe Employees
. . Cependant, la méthode getInfo
appartient aux instances.
Ici, static
est utilisé pour encapsuler les droits d'accès de la méthode seyHi
.
Donnez un autre exemple.
Promise.then() // Promise.then is not a function let p1 = new Promise(() => {}) p1.then(); // Promise {<pending>} Promise.all([1]); // Promise {<resolved>: Array(1)}
Comme vous pouvez le voir dans le code ci-dessus, Promise
utilise également static
pour encapsuler les autorisations d'accès de ses méthodes.
Héritage
Héritage : Parler d'héritage n'est pas inconnu. L'héritage peut donner aux sous-classes diverses propriétés publiques de la classe parent属性
et. publique 方法
. Sans avoir à réécrire le même code. Tout en laissant la sous-catégorie hériter de la catégorie parent, vous pouvez redéfinir certains attributs et remplacer certaines méthodes, c'est-à-dire écraser les attributs et méthodes d'origine de la catégorie parent afin qu'elle puisse obtenir différentes fonctions de la catégorie parent. (Extrait de l'Encyclopédie Baidu)
Une fois qu'une sous-classe hérite de la classe parent, la sous-classe possède les propriétés et les méthodes de la classe parent, mais elle possède également ses propres propriétés et méthodes uniques. la sous-classe doit être supérieure ou identique à la classe parent, pas inférieure à la classe parent.
class Employees { constructor(name){ this.name = name; } getName(){ console.log(this.name) } static seyHi(){ console.log("Hi"); } } class Java extends Employees{ constructor(name){ super(name); } work(){ console.log("做后台工作"); } } let java = new Java("Aaron"); java.getName(); java.work(); // java.seyHi(); // java.seyHi is not a function
À partir de l'exemple ci-dessus, nous pouvons voir que l'héritage n'héritera pas des méthodes statiques de la classe parent, mais uniquement des propriétés et méthodes publiques de la classe parent. Cela nécessite une attention particulière. Après l'héritage de la sous-classe
, elle possède non seulement la méthode getName
, mais possède également sa propre méthode worker
.
Polymorphisme
Polymorphisme : Signifie littéralement « plusieurs états », permettant d'attribuer des pointeurs de types de sous-classes au parent Pointeur vers le type de classe. (Extrait de l'Encyclopédie Baidu)
Pour parler franchement, le polymorphisme est la même chose, lorsque la même méthode est appelée et que les paramètres sont les mêmes, le comportement est différent. Le polymorphisme est divisé en deux types, l’un est le polymorphisme comportemental et le polymorphisme objet.
Réécriture et surcharge d'expressions polymorphes.
Qu'est-ce qui est prioritaire
Overriding : Les sous-classes peuvent hériter des méthodes de la classe parent sans réécrire la même méthode. Mais parfois, la sous-classe ne souhaite pas hériter des méthodes de la classe parent inchangées, mais souhaite apporter certaines modifications, ce qui nécessite une réécriture des méthodes. Le remplacement de méthode est également appelé remplacement de méthode. (Extrait de l'Encyclopédie Baidu)
class Employees { constructor(name){ this.name = name; } seyHello(){ console.log("Hello") } getName(){ console.log(this.name); } } class Java extends Employees{ constructor(name){ super(name); } seyHello(){ console.log(`Hello,我的名字是${this.name},我是做Java工作的。`) } } const employees = new Employees("Aaron"); const java = new Java("Leo"); employees.seyHello(); // Hello java.seyHello(); // Hello,我的名字是Leo,我是做Java工作的。 employees.getName(); // Aaron java.getName(); // Leo
Comme le montre le code ci-dessus, Java
hérite de Employees
Cependant, il existe seyHello
méthodes dans les sous-classes et les classes parentes afin de répondre à différentes. besoins, sous-classes Après avoir hérité de la classe parent, la méthode seyHello
est remplacée. Vous obtiendrez donc des résultats différents lors de votre appel. Puisque la sous-classe hérite de la classe parent, la sous-classe possède également la méthode getName
de la classe parent.
Qu'est-ce que la surcharge
重载就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。(节选自百度百科)
class Employees { constructor(arg){ let obj = null; switch(typeof arg) { case "string": obj = new StringEmployees(arg); break; case "object": obj = new ObjEmployees(ObjEmployees); break; case "number": obj = new NumberEmployees(ObjEmployees); break; } return obj; } } class ObjEmployees { constructor(arg){ console.log("ObjEmployees") } } class StringEmployees { constructor(arg){ console.log("StringEmployees") } } class NumberEmployees { constructor(arg){ console.log("NumberEmployees") } } new Employees({}) // ObjEmployees new Employees("123456") // StringEmployees new Employees(987654) // NumberEmployees
因为JavaScript是没有重载的概念的所以要自己编写逻辑完成重载。
在上面的代码中定义了Employees
,ObjEmployees
,StringEmployees
,NumberEmployees
类,在实例化Employees
的时候在constructor
里面进行了判断,根据参数的不同返回不同的对应的类。
这样完成了一个简单的类重载。
总结
封装可以隐藏实现细节,使得代码模块化;
继承可以扩展已存在的代码模块(类),它们的目的都是为了——代码重用。
多态就是相同的事物,调用其相同的方法,参数也相同时,但表现的行为却不同。多态分为两种,一种是行为多态与对象的多态。
在编程的是多多运用这个写思想对其编程时很有用的,能够使你的代码达到高复用以及可维护。
相关免费学习推荐:js视频教程
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

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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)

Sujets chauds





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

Le langage Go prend en charge la programmation orientée objet via la définition de type et l'association de méthodes. Il ne prend pas en charge l'héritage traditionnel, mais est mis en œuvre par composition. Les interfaces assurent la cohérence entre les types et permettent de définir des méthodes abstraites. Des cas pratiques montrent comment utiliser la POO pour gérer les informations client, notamment la création, l'obtention, la mise à jour et la suppression d'opérations client.

Les meilleures pratiques de POO en PHP incluent les conventions de dénomination, les interfaces et les classes abstraites, l'héritage et le polymorphisme, ainsi que l'injection de dépendances. Les cas pratiques incluent : l'utilisation du mode entrepôt pour gérer les données et l'utilisation du mode stratégie pour mettre en œuvre le tri.

Le langage Go prend en charge la programmation orientée objet, définissant des objets via des structures, définissant des méthodes à l'aide de récepteurs de pointeurs et implémentant le polymorphisme via des interfaces. Les fonctionnalités orientées objet assurent la réutilisation, la maintenabilité et l'encapsulation du code dans le langage Go, mais il existe également des limitations telles que le manque de concepts traditionnels de classes et d'héritage et de conversions de signatures de méthodes.

Il n'y a pas de concept de classe au sens traditionnel dans Golang (langage Go), mais il fournit un type de données appelé structure, à travers lequel des fonctionnalités orientées objet similaires aux classes peuvent être obtenues. Dans cet article, nous expliquerons comment utiliser les structures pour implémenter des fonctionnalités orientées objet et fournirons des exemples de code concrets. Définition et utilisation des structures Examinons d'abord la définition et l'utilisation des structures. Dans Golang, les structures peuvent être définies via le mot-clé type, puis utilisées si nécessaire. Les structures peuvent contenir des attributs

Introduction à la méthode d'obtention du code d'état HTTP en JavaScript : Dans le développement front-end, nous devons souvent gérer l'interaction avec l'interface back-end, et le code d'état HTTP en est une partie très importante. Comprendre et obtenir les codes d'état HTTP nous aide à mieux gérer les données renvoyées par l'interface. Cet article explique comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournit des exemples de code spécifiques. 1. Qu'est-ce que le code d'état HTTP ? Le code d'état HTTP signifie que lorsque le navigateur lance une requête au serveur, le service

En maîtrisant le suivi de l'état des objets, la définition de points d'arrêt, le suivi des exceptions et l'utilisation de l'extension xdebug, vous pouvez déboguer efficacement le code de programmation orienté objet PHP. 1. Suivez l'état de l'objet : utilisez var_dump() et print_r() pour afficher les attributs de l'objet et les valeurs des méthodes. 2. Définir un point d'arrêt : définissez un point d'arrêt dans l'environnement de développement et le débogueur se mettra en pause lorsque l'exécution atteint le point d'arrêt, ce qui facilitera la vérification de l'état de l'objet. 3. Tracez les exceptions : utilisez les blocs try-catch et getTraceAsString() pour obtenir la trace de la pile et le message lorsque l'exception se produit. 4. Utilisez le débogueur : La fonction xdebug_var_dump() peut inspecter le contenu des variables pendant l'exécution du code.

JavaScript et WebSocket : Construire un moteur de recherche en temps réel efficace Introduction : Avec le développement d'Internet, les utilisateurs ont des exigences de plus en plus élevées en matière de moteurs de recherche en temps réel. Lors d'une recherche avec les moteurs de recherche traditionnels, les utilisateurs doivent cliquer sur le bouton de recherche pour obtenir des résultats. Cette méthode ne peut pas répondre aux besoins des utilisateurs en matière de résultats de recherche en temps réel. Par conséquent, l’utilisation des technologies JavaScript et WebSocket pour mettre en œuvre des moteurs de recherche en temps réel est devenue un sujet brûlant. Cet article présentera en détail l'utilisation de JavaScript
