How do I create private methods when building classes in Ext? In this case I’d like to split one method into parts to modularise it, but keep each part private.
It looks as if functions defined within functions live in function scope in Javascript. This can be tested on the console in Chrome. If using the console the below has to be entered as one line. I have formatted it here for clarity.
(function(){ function fred() { alert('Hello'); }; fred(); })();
This results in a “Hello” alert as expected, but after it is run an attempt to call fred()
does not work. The function fred
was local to the outer function scope.
However:
(function(){ jim = function() { alert('Hello Jim'); }; jim(); })();
This alerts “Hello Jim” as expected, but once it has run a call to jim()
also produces the alert. The variable jim
was declared without the var
keyword so has become global.
(function(){ var jane = function() { alert('Hello Jane'); }; jane(); })();
The function jane()
is now private because of the var
keyword.