Я хотел бы исследовать и возиться с самомодифицирующими функциями и зная, что JavaScript имеет eval
и другие интересные функции отражения, такие как функция, печатающая свое тело изнутри, я полагал, что хотел бы сделать некоторые самоотверженные функции, изменение функциональных тестов с помощью JavaScript.Простейшая функция самомодификации в JavaScript?
Я хочу иметь простую функцию, которая при вызове изменяет себя в соответствии с каким-либо правилом.
Возможно, какая-то функция может сначала сделать простой console.log
, а в следующий раз, когда он будет называться, это сделает alert
. Это может быть, очевидно, достигается с помощью if
, но то, что я ищу здесь является то, что фактическая физическая функция должна первой выглядеть следующим образом:
function selfm()
{
console.log('hello')
// + modify self here somehow
}
И после первого звонка:
function selfm()
{
alert('hello')
}
Как может Я добился такого поведения в его простейшей форме?
Или вы можете просто реализовать функцию, которая принимает функцию селектора и массив других функций для вызова. Поэтому селектор выбирает, какой из них вызывать, затем он будет вызываться. Ясность, простота в обслуживании/тестировании, отсутствие уродливых мутаций во время выполнения. – zerkms
@zerkms Это не соответствует моей точке. Я хочу сделать функцию, которая может буквально редактировать себя изнутри, когда она вызывается, так что фактическая структура функции изменяется после вызова. Дело в том, чтобы полностью потерять информацию о том, как выглядела функция, прежде чем она была вызвана вообще. – Piwwoli
Это не проблема - это уродливое решение. Объясните исходную проблему, требующую такого странного решения. – zerkms