Извлекать и изменять ранее назначенную функцию события?

#javascript

#javascript

Вопрос:

Могу ли я извлечь и изменить ранее назначенную функцию события?

Например, я изначально добавляю обработчик события onclick к узлу, например, так :

 var someNode = document.getElementByID('someNode');

someNode.onclick = function(){
     //some stuff
};
  

В идеале позже мне нужно было бы вернуть это событие и изменить содержимое кода «some stuff».

Выполнимо ли это в javascript?

Комментарии:

1. Если вы хотите вернуть этот обработчик, это означает, что условие является неявным. Итак, почему бы просто не поместить это условие внутри этого обработчика?

2. это проблема xy. Чего вы пытаетесь достичь здесь?

3. Я пытаюсь изменить событие (onclick), но я понятия не имею, возможно ли это или нет.

4. @Ele: Потому что, когда я изначально добавляю событие, я понятия не имею, выполнено условие или нет.

5. Итак, вы хотите удалить первую и добавить другую?

Ответ №1:

Вы можете изменить onclick событие. Достаточно просто назначить это новой функции. Однако, как и в большинстве динамических языков, функция не является структурой данных, которую вы можете легко изменить. Таким образом, сохранение той же функции, но ее изменение, практически невозможно.

Я бы предложил создать новую функцию для вашего использования и присвоить ее onclick свойству. Однако JS — очень хороший язык, который обеспечивает закрытие ваших переменных. Таким образом, вы можете создать функцию, которая возвращает функцию в соответствии с вашими потребностями, если вам нужна некоторая гибкость.

Ответ №2:

Не совсем понятно, чего вы пытаетесь достичь. Но вы имеете в виду что-то подобное?

 var someNode = document.getElementByID('someNode');

let customizablePart = function (e) {
   // do some stuff
}

someNode.onclick = function (e) {
     // unchangeable instructions
     customizablePart.call(this, e)
}

// later ...

customizablePart = function (e) {
  // do new stuff
}