В чем отличие между наследованием в объектах и прототипах?
var foo = new Func('foo');
var bar = new Func('bar');

console.log(foo.sayHi === bar.sayHi);
В первом случае выдаст false, во втором - true.
https://learn.javascript.ru/prototype
В первом случае каждый раз, когда создается новый объект в него записывается все подряд  - и обычные свойства и свойства-методы. Во втором случае - только обычные свойства. Это экономнее по памяти, так как зачем в каждый объект записывать методы, если эти методы одинаковые для всех подобных объектов