Dopo aver letto un po 'sul Javascript del prototypical inheritance model, a cambiare il mio stile di costruire una classe damodo migliore per accedere ai membri privati in Javascript
var Some_Class = function() {
this.public_method = function() {
};
(function() {
// constructor
}).call(this)
}
a
var Some_Class = function() {
(function() {
// constructor
}).call(this)
}
Some_Class.prototype.public_method = function() {
};
Anche se capisco che questo è un buona pratica, ma non sono più autorizzato ad accedere ai metodi privati dal metodo pubblico
var Some_Class = function() {
var private_member = 'whatever';
(function() {
// constructor
}).call(this)
}
Some_Class.prototype.public_method = function() {
return private_member; // not possible
};
Dopo la lettura attraverso un articolo here (costruttore Chiusura-creato), poi sono uscito con questa
var Some_Class = function() {
var private_member = 'whatever',
private_method = function(_some_value) {
// private method implementation
};
if(!arguments.callee.prototype.public_method) {
arguments.callee.prototype.public_method = function() {
private_method.call(this, private_method);
};
}
(function() {
// constructor
}).call(this)
}
Tuttavia, quali sono gli svantaggi di fare questo ?! o c'è un modo migliore per farlo se voglio accedere a private member nel metodo pubblico?
grazie per averlo chiarito, per la seconda domanda ... Immagino sia perché probabilmente non sono ancora molto familiare al modello di oggetti e voglio rendere il mio codice simile al codice OOP in php/java/other OOP linguaggio di programmazione – Jeffrey04