При чтении https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call для раздела «Использование вызов цепи конструкторами для объекта»:Javascript Прототип Наследование и Chaining конструкты для объекта
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.call(this, name, price);
this.category = 'food';
}
Food.prototype = Object.create(Product.prototype);
function Toy(name, price) {
Product.call(this, name, price);
this.category = 'toy';
}
Toy.prototype = Object.create(Product.prototype);
var cheese = new Food('feta', 5);
var fun = new Toy('robot', 40);
Я прочитал, что прототип объект на самом деле является сам объект, который указывает к ячейкам памяти свойств конструктора.
В function Food(name, price)
он наследует свойства Изделия конструктора с Product.call(this)
. Что делает Food.prototype = Object.create(Product.prototype);
? Является ли это добавлением еще одного прототипа в Food (если это возможно, у вас есть 2 прототипа)? Или это дополнение к прототипу Продовольствия с теми же образцами прототипа Продукта (который он уже унаследовал, поэтому для меня не имеет смысла эфир)?
'Food.prototype = Object.create (Product.prototype) 'как' extends' на других языках. 'Product.call (this)' как 'super'. – elclanrs