Maison > interface Web > js tutoriel > le corps du texte

Relation ou capacité, ces deux critères sont utilisés

Barbara Streisand
Libérer: 2024-10-07 06:22:29
original
741 Les gens l'ont consulté

Relationship or ability, both of these criteria are used

Dans la société, lors de l'évaluation des capacités et de la valeur d'une personne, il existe souvent deux critères différents : l'un est "basé sur les relations" et l'autre est "basé sur la capacité". Les deux normes sont incarnées dans différentes cultures, secteurs et valeurs personnelles, chacune ayant ses propres partisans et détracteurs.

Dans les langages de programmation, il existe deux types de normes qui organisent le code de différentes manières, reliant les structures de données aux fonctions. Cet article abordera brièvement l'application et le principe d'action de ces deux normes communes.

modèle de classe

Dans le langage Javascript, le mot-clé class est fourni, que nous pouvons utiliser pour définir des classes. Il est important de noter que les classes sont extensibles et que lorsque des méthodes sont appelées sur une instance, elles recherchent les définitions de méthodes dans l'ordre de la chaîne de prototypes. Par exemple :


class Animal {
    move() { return 'move' }
}
class Monkey extends Animal {
    jump() { return 'jump' }
}
class Human extends Monkey {
    write() { return 'write' }
}


Copier après la connexion

extends Les mots-clés peuvent nous aider à définir une nouvelle classe qui s'étend à partir d'autres classes. Nous pouvons obtenir la chaîne prototype comme ceci :


let me = new Human()
let proto = me.__proto__
let r = []

while (proto !== null) {
    r.push(proto.constructor.name)
    proto = proto.__proto__
}


Copier après la connexion

Nous obtiendrons r comme ceci : ['Humain', 'Singe', 'Animal', 'Object']. Lorsque nous appelons une méthode, le succès de l'appel de méthode dépend de l'existence ou non d'une définition correspondante sur la chaîne de prototypes. Par exemple, si vous appelez me.move(), il a une définition dans la classe Animal et l'appel réussit.

C'est le modèle de classe, que j'aime appeler modèle "relationnel", qui peut être appelé tant qu'il est défini dans la classe de l'instance elle-même, ou dans la classe parent, la classe grand-parent, etc. allumé.

Modèle basé sur les compétences

Par rapport au modèle basé sur les relations, le modèle basé sur les compétences est beaucoup plus simple. Tant qu'une instance satisfait un certain trait, la méthode correspondante peut agir sur l'instance quelle que soit la relation de l'instance.


let me = {
    moveable: true,
    freezable: false
}

function move(x) { return x.moveable ? 'move' : undefined }
function freeze(x) { return x.freezable ? 'freeze' : undefined }


Copier après la connexion

Dans ce modèle, les données et les méthodes sont indépendantes les unes des autres. L'avantage est qu'il est concis et simple, mais l'inconvénient est évident, en raison de l'indépendance de la méthode et des données, il est difficile de remplacer la définition de la méthode.

résumé

Après avoir présenté les deux manières de connecter les structures de données et les méthodes, on peut penser que lorsqu'il est nécessaire d'implémenter des méthodes avec des fonctions différentes du même nom selon la classe des données, il est recommandé d'utiliser le modèle de classe relationnelle . Lorsque la méthode est généralement relativement fixe et que les données sont variables et que la même méthode fonctionne sur des données différentes, le modèle basé sur les compétences peut être utilisé.

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!

source:dev.to
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!