В чем различие между?
function Person(){} - Вы обьявляете функцию с именем Person.var person = Person() - Вы вызываете функцию Person и результат сохраняете в переменную person var person = new Person()- Вы создаете новый обьект использую функцию-конструктор Person
function superFunc (arg) {};
function - запуск конструктора функции
superFunc - имя функции
() - переменные-аргументы
{} - контекст выполнения
получается сделали функцию с именем, аргументами и контекстом 
при этом вызов superFunc() идет по имени функции, хочу обратить внимание, что скобки по время вызова, это оператор вызова.
var super = superFunc()  - читаем справа налево, вызови функцию с именем superFunc и помести результат в переменную super.
var super = new superFunc() - читаем справа налево, вызови функцию с именем superFunc как конструктор, создай с него объект который будет помещен в переменную super. Тут стоит обратит внимание, что функция нечего не возвращает, а создает объект по конструктору.