Sono piuttosto un newbie in javascript e sto passando un po 'di tempo a cercare di creare oggetti con nomi in js.Classe nidificata in javascript, ereditarietà dei metodi privati
Ora, questo è quello che sto cercando di fare:
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();
ho cercato di includere la classe annidata all'interno del primo, ma non sta funzionando anche se provo:
this.nested = function() {
var mainObject = this;
return {
publicNestedMethod = function() {
mainObject.privateMethod();
}
}
}();
Qualcuno può aiutarmi per favore? mi perderò la testa.
Phaedra.
cosa succede se: this.nested = function() {var privateNested = function() {} ritorno {} }(); – Phaedra
È necessario aggiungere parentesi attorno alla funzione (dichiarazione vs espressione, vedere http://yura.thinkweb2.com/named-function-expressions/). Oltre a questo, è esattamente ciò che una chiusura è - stai incapsulando le variabili locali utilizzate al momento della creazione della funzione. Modificato la risposta per mostrare un esempio. –
Quindi è quello che stavo cercando, penso. o no? mi mancava la parestesia .. – Phaedra