我曾经想过这样一个问题,我一直没有必要使用类或构造函数,我开始思考是否有情况下我应该使用它们?例如,下面的代码基本上是相同的,除了一个使用了构造函数而另一个没有。
使用构造函数:
function Food(foodName, foodPrice) {
Currencies.call(this, foodPrice);
this.category = 'food';
this.name = foodName;
}
function Currencies(usd) {
this.usd = usd;
this.won = +usd * 1000;
}
const pizza = new Food('pizza', 30); // { usd: 30, won: 30000, category: 'food', name: 'pizza' }
const burger = new Food('burger', 10); // { usd: 30, won: 30000, category: 'food', name: 'pizza' }
不使用构造函数
function food(foodName, foodPrice) {
return { name: foodName, category: 'food', ...(currencies(foodPrice)) }
}
function currencies(usd) {
return { usd, won: usd * 1000 }
}
const pizza = food('pizza', 30); // { usd: 30, won: 30000, category: 'food', name: 'pizza' }
const burger = food('burger', 10); // { usd: 30, won: 30000, category: 'food', name: 'pizza' }
对我来说,不使用构造函数似乎更简单,所以我会尽量避免使用。您喜欢哪种方式,原因是什么?什么情况下您才会选择使用构造函数而不是“常规”函数?