Ich versuche ein eingebettebares JavaScript-Widget zu erstellen. Das folgende (Beispiel) ist in einem Skript-Tag enthalten.Wie kann eine Funktion mit einem Prototyp in einem eingebetteten JavaScript-Widget kommunizieren?
(function (window) {
function TestFunction(params) {
console.log("init");
this.someVal = "ThisVal";
}
TestFunction.prototype.protoFunc = function() {
return "Hello " + this.someVal;
};
function hello() {
return eval("TestFunction.protoFunc();");
}
}(window));
Wenn instanziiert ich das Widget als
let test = TestFunction({});
folgt Wenn ich dann
Typtest.protoFunc();
Hallo ThisVal
gedruckt werden. Wenn die Hello-Funktion jedoch ausgelöst wird, wird ein Fehler ausgegeben, der besagt, dass TestFunction.protoFunc is not a function
. Gibt es eine Möglichkeit, dass die hello()
Funktion die TestFunction.prototype.protoFunc
Funktion auslösen kann?
Hey Jason, ich danke Ihnen für die Beantwortung. Ich habe die Frage aktualisiert, um ein wenig näher an das vorliegende Szenario zu kommen - versuche, eval zu verwenden ... Ich bin nicht sicher, dass die "statische" Funktion praktikabel ist. Das Widget nimmt bei der Instanziierung unterschiedliche Werte in params an und diese ändern sich, wenn das Widget z. 'this.someVal =" ThisVal ";' kann 'this.SomeVal =" covfefe ";' außerhalb des Widgets oder innerhalb des Widget-Codes werden. – user714852
@ user714852 'this' ist nur in einem Objekt verfügbar. sonst solltest du es statisch benutzen. Ich habe das erste Szenario ein wenig aktualisiert und alles objektbasiert gemacht. Normalerweise verwenden Sie Setter oder Getter, um zwischen Klassen intern und extern zu kommunizieren. Es bedeutet, Daten zu kapseln –