Как сделать область видимости в javascript?
Можно обратиться только к глобальному объекту, через window, self или this (последнее — для функции — не метода объекта). Даже для внутренних функций со своим скоупом this будет window.
<script>

(function(){
	var aa = function(){
		console.log(window==this, this)
	}
	aa()
})()

</script>
Локальный скоуп недоступен. Сделано, видимо, для возможности написания независимых скриптов на одной странице или, другими словами, для невлияния другого скрипта на первый через скоуп каким-либо образом (например, стирать переменные из него).
Возможно я не совсем понял вопроса, но…

var data = (function(){
    var a = "provate string";
    var b = "public string;";

    return {
        a: a
    };
})();


следующим способом обычно достигают имитации приватных свойств. Обычно используется для приватных методов/свойств и экспортирует объект содержащий геттеры и сеттеры.

Если вам необходимо иметь доступ ко всем внутренним переменным, то имеет смысл публиковать их через this.prototype. Тогда вам останется лишь создать инстанс вашей функции и обращаться к опубликованным свойствам. Возможно можно ограничиться лишь this но тут я вам точно не скажу. Надо пробовать.