使用原型设计模式相当新,所以我有一个关于为多个构造函数变量创建setter / getter的最有效方法的快速问题。
说我有一次"旅行"对象:
function trip(){
this.numberOfDays = 0
this.price = 0
this.activites = []
this.bPacks = []
this.pPacks = []
}
现在,活动,bPack和pPacks的设置者都主要做同样的事情。他们将添加或删除与其关联的数组。
所以不要为这些属性编写6个单独的setter,例如:
trip.prototype.addActivity = function(itemToAdd){
var index = this.activites.push(itemToAdd)
}
trip.prototype.addBPack = function(itemToAdd){
var index = this.bPack.push(itemToAdd)
}
等...
是否可以做这样的事情:
trip.prototype.addPacksOrActivity = function(item,typeOfItem){
this.typeOfItem.push(item);
}
我们在哪里定位我们要推送到的旅行对象的特定属性?
欢迎任何有关建立制定者/获取者的更有效方法的建议,但我试图避免从ES6转发,因此优先考虑ES5类型的答案。
答案 0 :(得分:0)
是的,你可以用一个简单的循环来做到这一点:
["activities", "bPacks", "pPacks"].forEach(function(typeOfItem) {
var methodName = "add"+typeOfItem[0].toUpperCase()+typeOfItem.slice(1);
Trip.prototype[methodName] = function(item) {
this[typeOfItem].push(item);
};
});