есть работающий код:
var программа = {
_id : 'id',
set при_нажатии_вверх(функция)
{
if(функция)
{
нажатие_клавиш.ArrowUp.добавить_ид = this._id
this.ArrowUp = функция
}
else
{
нажатие_клавиш.ArrowUp.удалить_ид = this._id
this.ArrowUp = null
}
},
ArrowUp : null,
set при_нажатии_вниз(функция)
{
if(функция)
{
нажатие_клавиш.ArrowDown.добавить_ид = this._id
this.ArrowDown = функция
}
else
{
нажатие_клавиш.ArrowDown.удалить_ид = this._id
this.ArrowDown = null
}
},
ArrowDown : null,
}
но его надо упростить чтобы не повторять это для каждой клавиши
пытаюсь сделать это в цикле через defineProperty после создания объекта "программа" -
var набор_клавиш = {ArrowUp:'при_нажатии_вверх', ArrowDown:'при_нажатии_вниз', ArrowLeft:'при_нажатии_влево', ArrowRight:'при_нажатии_вправо',}
for (var x in набор_клавиш)
{
var код = x
var команда = набор_клавиш[x]
Object.defineProperty(программа, команда, {
set: function(функция) {
if(функция)
{
нажатие_клавиш[код].добавить_ид = this._id
this[код] = функция
}
else
{
нажатие_клавиш[код].удалить_ид = this._id
this[код] = null
}
}
})
программа[код] = null
}
но не работает
подозреваю что есть синтаксическая ошибка