JavaScript-Prototyp Prototyp, eine kurze Zusammenfassung der Prototypkette

Kürzlich habe ich das Problem untersucht, ausgereifte Javascript-Dreierkomponenten nach Hongmeng zu verpflanzen. Aufgrund der Unterschiede in der Syntax und den eingebauten Objekten zwischen der Arki-Engine und Web/Nodejs in Hongmeng habe ich gesehen, dass viele Studenten aufdringliche Modifikationen verwenden zu verpflanzen, so dass sie oft mehrere Methoden modifizieren.Das gesamte Git-Repository wurde portiert.

Das Wissen über JavaScript-Prototypen und Prototypketten, das ich zuvor gelernt habe, habe ich diese Woche Schritt für Schritt wiederholt und mich darauf konzentriert, Lektion 16 der [JavaScript Series Tutorials with Mountain People] anzuhören. Verstehen, was ein Prototyp ist – Prototyp und __prop__ und Prototyp Kette? _哔哩哔哩_bilibili, siehe Artikel darin: Object Prototype - Learning Web Development | MDN

Ändern Sie mithilfe des modifizierbaren Mechanismus des JavaScript- Objektprototyps die padStart -Methode des utils -Objekts in der unabhängigen Datei patch.js ohne Eingriff und ändern Sie die js -Syntax des Problemcodes . Der Vorteil dieser Methode besteht darin, dass der Quellcode der ursprünglichen Komponenten von Drittanbietern nicht geändert und gewartet werden muss , sondern nur ein Patchcode gepflegt werden muss. Es ist nicht bequem, bestimmte Beispiele vom Firmencomputer freizugeben.

Erfassen Sie einfach die allgemeinen Wissenspunkte:

JavaScript wird oft als prototypbasierte Sprache beschrieben – jedes Objekt hat ein Prototypobjekt, und das Objekt verwendet seinen Prototyp als Vorlage und erbt Methoden und Eigenschaften vom Prototyp. Ein Prototypobjekt kann auch einen Prototyp haben und Methoden und Eigenschaften Schicht für Schicht von ihm erben und so weiter. Diese Beziehung wird oft als Prototypkette (Prototypkette) bezeichnet und erklärt, warum ein Objekt Eigenschaften und Methoden hat, die in anderen Objekten definiert sind.

function doSomething(){}
doSomething.prototype.foo = "bar";
var doSomeInstancing = new doSomething();
doSomeInstancing.prop = "some value";
console.log("doSomeInstancing.prop:      " + doSomeInstancing.prop);
console.log("doSomeInstancing.foo:       " + doSomeInstancing.foo);
console.log("doSomething.prop:           " + doSomething.prop);
console.log("doSomething.foo:            " + doSomething.foo);
console.log("doSomething.prototype.prop: " + doSomething.prototype.prop);
console.log("doSomething.prototype.foo:  " + doSomething.prototype.foo);
console.log(doSomething.prototype  === doSomeInstancing.__proto__);

Operationsergebnis:

doSomeInstancing.prop:      some value
doSomeInstancing.foo:       bar
doSomething.prop:           undefined
doSomething.foo:            undefined
doSomething.prototype.prop: undefined
doSomething.prototype.foo:  bar
true

Ein Beispiel für die Änderung des Prototyps Prototyp finden Sie in den Studiennotizen zum Prototyp von nodejs – JavaShuo

Wenn daher eine nicht-intrusive Änderung erforderlich ist und die ursprüngliche Bibliothek ein Objekt exportiert, ändern Sie die Eigenschaften des Objekts direkt. Wenn die ursprüngliche Bibliothek eine Funktion (Klasse) repariert, dann ändern Sie den Prototypprototyp dieses Objekts.

Natürlich hoffe ich auch, dass Hongmeng die Syntax in einem späteren Stadium kompatibler mit nodejs/Web-Standards machen kann oder Polify verwenden kann, um die Konsistenz zu wahren, und Open-Source-js-Komponenten direkt verwenden kann

Ich denke du magst

Origin blog.csdn.net/sd2131512/article/details/125220729
Empfohlen
Rangfolge