Heim > Web-Frontend > js-Tutorial > Hauptteil

Beziehung oder Fähigkeit, beide Kriterien werden herangezogen

Barbara Streisand
Freigeben: 2024-10-07 06:22:29
Original
829 Leute haben es durchsucht

Relationship or ability, both of these criteria are used

In der Gesellschaft gibt es bei der Beurteilung der Fähigkeiten und des Wertes einer Person oft zwei unterschiedliche Kriterien: eines ist „basierend auf Beziehungen“ und das andere ist „basierend auf Fähigkeiten“. Beide Standards sind in unterschiedlichen Kulturen, Branchen und persönlichen Werten verkörpert, jeder mit seinen eigenen Befürwortern und Kritikern.

Innerhalb von Programmiersprachen gibt es zwei Arten von Standards, die Code auf unterschiedliche Weise organisieren und Datenstrukturen mit Funktionen verknüpfen. In diesem Artikel wird kurz auf die Anwendung und das Wirkprinzip dieser beiden gemeinsamen Standards eingegangen.

Klassenmodell

In der Javascript-Sprache wird das Schlüsselwort class bereitgestellt, mit dem wir Klassen definieren können. Wichtig ist, dass Klassen erweiterbar sind und wenn Methoden für eine Instanz aufgerufen werden, suchen sie nach Methodendefinitionen in der Reihenfolge der Prototypenkette. Zum Beispiel:


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


Nach dem Login kopieren

Extends-Schlüsselwörter können uns dabei helfen, eine neue Klasse zu definieren, die andere Klassen erweitert. Wir können die Prototypenkette so erhalten:


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

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


Nach dem Login kopieren

Wir erhalten Folgendes: ['Mensch', 'Affe', 'Tier', 'Objekt']. Wenn wir eine Methode aufrufen, hängt der Erfolg des Methodenaufrufs davon ab, ob in der Prototypenkette eine entsprechende Definition vorhanden ist. Wenn Sie beispielsweise me.move() aufrufen, hat es eine Definition in der Animal-Klasse und der Aufruf ist erfolgreich.

Dies ist das Klassenmodell, das ich gerne als „relationales“ Modell bezeichne, das aufgerufen werden kann, solange es in der Klasse der Instanz selbst oder in der übergeordneten Klasse, Großelternklasse usw. definiert ist am.

Kompetenzbasiertes Modell

Im Vergleich zum beziehungsbasierten Modell ist das kompetenzbasierte Modell viel einfacher. Solange eine Instanz ein bestimmtes Merkmal erfüllt, kann die entsprechende Methode unabhängig von der Beziehung der Instanz auf die Instanz einwirken.


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

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


Nach dem Login kopieren

In diesem Modell sind Daten und Methoden unabhängig voneinander. Der Vorteil besteht darin, dass es prägnant und unkompliziert ist, aber der Nachteil liegt auf der Hand, da die Methode und die Daten unabhängig sind und es schwierig ist, die Methodendefinition zu überschreiben.

Zusammenfassung

Nachdem wir die beiden Möglichkeiten zum Verbinden von Datenstrukturen und Methoden vorgestellt haben, können wir davon ausgehen, dass die Verwendung des relationalen Klassenmodells empfohlen wird, wenn Methoden mit unterschiedlichen Funktionen mit demselben Namen entsprechend der Datenklasse implementiert werden müssen . Wenn die Methode normalerweise relativ fest ist und die Daten veränderbar sind und dieselbe Methode mit unterschiedlichen Daten funktioniert, kann das kompetenzbasierte Modell verwendet werden.

Das obige ist der detaillierte Inhalt vonBeziehung oder Fähigkeit, beide Kriterien werden herangezogen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage