Javascript inheritance: call super-constructor or use prototype chain?

Posted by Jeremy S. on Stack Overflow See other posts from Stack Overflow or by Jeremy S.
Published on 2010-11-11T09:28:24Z Indexed on 2011/01/05 18:54 UTC
Read the original article Hit count: 198

Hi folks,

quite recently I read about javascript call usage in MDC

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

one linke of the example shown below, I still don't understand.

Why are they using inheritance here like this

Prod_dept.prototype = new Product();

is this necessary? Because there is a call to the super-constructor in

Prod_dept()

anyway, like this

Product.call

is this just out of common behaviour? When is it better to use call for the super-constructor or use the prototype chain?

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");

Thanks for making things clearer

© Stack Overflow or respective owner

Related posts about JavaScript

Related posts about inheritance