Наследование Javascript: вызвать супер-конструктор или использовать цепочку прототипов?

Совсем недавно я прочитал об использовании вызовов JavaScript в MDC

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

одной ссылки в примере, показанном ниже, я все еще не понимаю.

Почему они используют здесь наследование

Prod_dept.prototype = new Product();

, это необходимо? Поскольку в

Prod_dept()

все равно есть вызов суперконструктора, вот так

Product.call

это просто необычное поведение? Когда лучше использовать вызов суперконструктора или цепочку прототипов?

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

Спасибо за ясность

78
задан Tom van der Woerdt 28 December 2011 в 15:48
поделиться