Ich möchte eine Funktion zu einem Prototyp hinzufügen, um ein Feature zu einer Bibliothek hinzuzufügen. Wie kann ich auf den "diesen" Kontext des Prototyps zugreifen? Ich gebe Ihnen ein Beispiel zu erklären, was ich meine.Javascript: Erhalten Sie Zugriff auf Prototyp-Kontext beim Hinzufügen einer Funktion
// file a
import * as utils from './utils'
import Validation from './b'
Validation.prototype.unique = function(url, params) {
if (!utils.isEmptyString(url) && !utils.isEmptyObject(params) {
// make api call for testing if unique
this._messages.push('Unique'); // <= I would like to access to "this" context of Validation in file b.
}
return this;
}
// file b
import * as utils from './utils'
export function Validation() {
this._messages = [];
this._value = undefined;
//...
}
Validation.prototype.required = function() {
if (!utils.isEmpty(this._value)) {
this._messages.push('Required);
}
return this;
}
das einfach funktioniert; Es spielt keine Rolle, in welcher Datei Ihre Funktion definiert ist. 'Dies 'wird nur von der Callsite übergeben. – SLaks
Seitennotiz: Sie werden einige Leute sehen, die den Begriff "context" verwenden, um auf den Wert von 'this' zu verweisen, aber" context "(wie durch die Spezifikation definiert) und' this' haben sehr wenig miteinander zu tun . 'Das' ist nur' das'. :-) –
Wenn 'Validation.prototype.unique'" richtig "heißt, nämlich die Methode einer' Validation'-Instanz, dann bezieht sich 'this' nur auf diese Instanz. * "Ich möchte auf" diesen "Kontext von Datei b zugreifen" * Ich glaube nicht, dass das ist, was Sie wollen;) –