на MDN-х page for Call есть пример 3 конструкторов: Продукт, Продукты питание и игрушкиВ чем разница между этими двумя конструкторами в JavaScript?
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);
Почему эта линия нужна?
Food.prototype = Object.create(Product.prototype);
Не могу я просто это сделать?
function Food (name, price) {
var me = Product.call(this, name, price);
me.category = 'food';
return me;
}
в ваших «просто» вариант, после инициализации изменений прототипа продукта не будет отображаться на случаях еды , это может быть хорошо, в зависимости от ваших потребностей. и да, есть много способов настроить такие вещи, и все они имеют незначительные отличия. используйте то, что работает для вас. – dandavis
@ dandavis, что вы сказали, правда. Можете ли вы сказать это как ответ? – tholapz