Он не знает про scope, а вы ему ООП. Вот что он хочет.
(function(){
var /* все переменные для всех функций внутри безымянной функции */;
function foo(){
/* доступны все */
}
function bar(){
/* доступно всё */
}
function baz(){
/* доступно всё */
}
})();
Он же безусловно запускает свою func1() сейчас.