Стоит отметить, поскольку я не могу сказать, рассматривали ли вы это, что если вы просто предоставляете имя функции в литерале объекта, вы можете ссылаться на него следующим образом:
obj = {
foo : function METHODNAME() {
var myName = getMethodName(obj, METHODNAME); // "foo"
}
}
Но будьте осторожны: я думаю, что в выпусках версий IE есть ошибка, из-за которой будет определена функция с именем METHODNAME
во вложенной области (вместо того, чтобы делать ее доступной только для этой функции).Однако, по спецификации, это совершенно кошерное и прекрасно работает, если вы используете имя, не найденное нигде в самой функции, или в коде, переданном в eval
, если функция может вызвать eval
.