Не имеет ничего нового в использовании шаблона проектирования прототипа, поэтому у меня был быстрый вопрос о наиболее эффективном способе создания сеттера/получателя для нескольких переменных-конструкторов.Передача «этого» указателя от конструктора объекта к установщику/получателю в JS
Говорят, у меня была «поездка» объект:
function trip(){
this.numberOfDays = 0
this.price = 0
this.activites = []
this.bPacks = []
this.pPacks = []
}
Теперь сеттеры для деятельности, bPacks и pPacks все делать в первую очередь то же самое. Они добавят или удалят массив, с которым они связаны.
поэтому вместо того, чтобы писать 6 отдельных сеттеры для этих свойств, таких как:
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.
Прежде всего: [KISS] (https://en.wikipedia.org/wiki/KISS_principle). Вам действительно нужны индивидуальные геттеры и сеттеры? 'myTrip.activities.push (...)' не будет делать? А если нет: сначала вы должны беспокоиться о своем внешнем интерфейсе API. Вы действительно хотите 'myTrip.addPacksOrActivity (foo, 'pPacks')' ... ?! Выглядит ужасно. – deceze
@deceze Я вижу вашу точку зрения. Вариант использования здесь - очень длинная форма, которую можно изменить несколько раз (если, скажем, пользователь пошел туда и обратно, чтобы изменить свой выбор). На данный момент код ужасен, и я ищу более структурированные шаблоны дизайна. Я вижу альтернативу, использующую хэш и просто извлечение/настройку с помощью Trip.price = foo и т. Д. – dpat