Wpis z mikrobloga

#javascript #programowanie

Nie potrafię czegoś zrozumieć.

function Product(name, price) {
this.name = name;
this.price = price;

if (price < 0)
throw RangeError('Cannot create product "' + name + '" with a negative price');
return this;
}

function Food(name, price) {
Product.apply(this, arguments);
this.category = 'food';
}
Food.prototype = new Product();

function Toy(name, price) {
Product.apply(this, arguments);
this.category = 'toy';
}
Toy.prototype = new Product();

var cheese = new Food('feta', 5);
var fun = new Toy('robot', 40);

czym jest linijka ?
Food.prototype = new Product(); ??

początkowo myślałem, że to coś a'la:
Food._proto_ = Product ale ta linijka to dziedziczenia coś jak a extens b w javie (chyba)

proszę o komentarz.
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@zulik:
Bo taki mniej więcej jest jej sens.

Żeby "dziedziczyć" w JS prototype Food musi rozszerzać prototype Product.
Nie podoba mi się zaś zapis z tego przykładu powyżej, gdzie jest wywołany kontruktor Product
lecz nie na potrzeby tworzenia jego instancji. Dużo lepsze byłoby
  • Odpowiedz