上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