Herança Javascript: chamar super construtor ou usar cadeia de protótipos?

Recentemente, li sobre o uso de chamadas JavaScript no MDC

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/call

uma linha do exemplo mostrado abaixo, eu ainda não entendo.

Por que eles estão usando herança aqui como esta

Prod_dept.prototype = new Product();

isso é necessário? Porque existe uma chamada para o super construtor em

Prod_dept()

de qualquer maneira, assim

Product.call

isso é apenas fora do comportamento comum? Quando é melhor usar a chamada para o super construtor ou usar a cadeia de protótipos?

function Product(name, value){
  this.name = name;
  if(value >= 1000)
    this.value = 999;
  else
    this.value = value;
}

function Prod_dept(name, value, dept){
  this.dept = dept;
  Product.call(this, name, value);
}

Prod_dept.prototype = new Product();

// since 5 is less than 1000, value is set
cheese = new Prod_dept("feta", 5, "food");

// since 5000 is above 1000, value will be 999
car = new Prod_dept("honda", 5000, "auto");

Obrigado por esclarecer as coisas

questionAnswers(3)

yourAnswerToTheQuestion