Хорошо, у меня проблема.
КРАТКАЯ ВЕРСИЯ: Я хочу сделать это:
const createThing = function( behaviours(intensities) ){
return {
behaviour1: behaviour1(intensity1),
behaviour2: behaviour2(intensity2)
and so on for each behaviour(intensity) passed as an argument
}
}
//so when doing:
const wtf = createThing( cat(loud), dog(whereistheball), bird(dee) );
// wtf should be:
{
cat: cat(loud),
dog: dog(whereistheball),
bird: bird(dee)
}
Я пробовал среди прочего что-то вроде this:
const createThing = function( behaviours(intensities) ){
return {
for(a in arguments){
[a.name]: a;
}
}
}
На прошлой неделе я пытался сделать это разными способами, но безуспешно. Кто-нибудь может мне помочь?
ДЛИТЕЛЬНАЯ ВЕРСИЯ: Хорошо, у меня есть фабричная функция поведения ма gnet и фабричная фабрика частиц, похоже, это
const magnet = funtion(intensity) {
// returns a magnetic object with that intensity
}
const createParticle = function( location, static or dynamic, behaviours ){
// returns a particle object with the properties and behaviours listed above
}
Проблема в том, что я не могу заставить часть поведения работать. К настоящему времени у меня есть фабрика поведения magneti c, но я также хочу иметь электрический, гравитационный, случайный и т. Д. c. Я хочу, чтобы объект частицы получил имя поведения в качестве нового ключа свойства, а объект, который он создает как значение этого свойства, когда это поведение передается в качестве аргумента функции фабрики частиц, примерно так:
const particle1 = createParticle ( location, dynamic, magnet(intensity) )
//should return
{
location,
dynamic,
magnet: magnet(intensity)
}
или даже
const particle2 = createParticle ( location, dynamic, magnet(intensity), eletric(intensity) )
//should return
{
location,
dynamic,
magnet: magnet(intensity),
eletric: eletric(intensity)
}
и т. д.
Я пытался использовать метод function.name, но это невозможно, поскольку, когда я передаю функцию поведения в качестве параметра частице, это оценивает в объект. Я попытался использовать функцию обратного вызова, а затем использовать function.name, но он ничего не делает, поскольку мне все еще нужно передать функцию поведения вместе с ее параметрами фабрике частиц.
Возможно ли это даже ??? Как???