Ich bin ein ziemlich Neuling in Javascript, und ich verbringe einige Zeit versuchen, namespaced Objekte in js zu erstellen. JetztGeschachtelte Klasse in Javascript, Vererbung von privaten Methoden
, das ist, was ich zu tun habe versucht:
MainObject = function() {
var privateVariable = "i'm private";
var privateMethod = function() {
// doSomething
}
this.publicMethod = function() {
// doPublicSomething
}
}
MainObject.prototype.nested = function() {
this.publicNestedMethod = function() {
// that's not working at all
this.privateMethod(privateVariable);
}
}
MyObject = new MainObject();
MyObject.publicMethod();
MyObject.publicNestedMethod();
ich die geschachtelte Klasse innerhalb des ersten gehören versucht, aber es funktioniert nicht auch wenn ich versuche:
this.nested = function() {
var mainObject = this;
return {
publicNestedMethod = function() {
mainObject.privateMethod();
}
}
}();
Jemand kann mir bitte helfen? Ich werde meine Meinung darüber verlieren.
Phaedra.
was, wenn: this.nested = function() { var privateNested = function() { } return { } }(); – Phaedra
Sie müssen Klammern um die Funktion hinzufügen (Deklaration vs. Ausdruck, siehe http://yura.thinkweb2.com/named-function-expressions/). Abgesehen davon ist es genau das, was eine Schließung ist - Sie kapseln lokale Variablen, die zum Zeitpunkt der Funktionserstellung verwendet werden. Bearbeitete die Antwort, um ein Beispiel zu zeigen. –
Also das ist, wonach ich gesucht habe, denke ich. oder nicht? Mir fehlte die Parethesis. – Phaedra