Я понимаю, что функцию можно легко скопировать в новую переменную, написав:
var wu = function() {
// do stuff
)
var tang = wu;
var bee = tang;
// etc
и таким образом может пройти теоретически бесконечное число имен. Я также понимаю, что в приведенном выше примере я мог бы сказать var wu = undefined
и ссылка будет удалена, но Im задается вопросом, может ли функция переименовать себя как часть своего собственного контекста? Смысл, могу ли я написать:
function wuTang() {
// do stuff
// rename self
}
wuTang(); // runs successfully
wuTang(); // returns undefined
Я не беспокоюсь о процессе создания нового имени, я просто задаюсь вопросом, возможно ли это. Я не хочу вызывать вторую функцию для переименования исходной функции, я хочу, чтобы функция переименовывала себя, поэтому она может быть вызвана только одним именем.
window.wutang = function() {
var f = window.wutang;
window.watang = f;
delete window.wutang;
}
Этого должно быть достаточно, чтобы "переименовать" себя :)
wutang(); // ok
wutang(); // fail
watang(); // should kill self :)
window
.
wuTang = undefined;
в теле функции?