Podczas implementacji wzorca modułu, w jaki sposób funkcje prywatne uzyskują dostęp do prywatnych właściwości modułu? Nie widziałem żadnych przykładów, w których programiści to robią. Czy jest jakiś powód, aby tego nie robić?Wzorzec modułu JavaScript: w jaki sposób metody prywatne mają dostęp do zakresu modułu?
var module = (function(){
// private property
var number = 0;
// private method
_privateIncrement = function(){
// how do I access private properties here?
number++;
};
// public api
return {
// OK
getNumber: function(){
return number;
},
// OK
incrNumber: function(){
number++;
},
// Doesn't work. _privateIncrement doesn't have
// access to the module's scope.
privateIncrNumber: function(){
_privateIncrement();
}
};
})();
Działa dobrze: http://jsfiddle.net/DREKt/ Chociaż prawdopodobnie chcesz poprzedzić '_privateIncrement' deklaracją' var'. – Dennis
jeśli 'liczba' nie była związana w zamknięciu modułu i była częścią obiektu, to może być konieczne użycie' apply() 'lub' call() ', aby wywołać metodę prywatną w odpowiednim kontekście. '_privateIncrement.call (this)' –