То, как вы определили и назвали свою A
функцию, объект, для которого вызывается A
, будет DOMWindow
объектом, то есть глобальным объектом.
Что касается того, из какого метода X
он называется (это то, что вы подразумеваете под methodNAME
, я полагаю) - так, как вы определили свои методы (определяя анонимную функцию и назначая ir свойству), вы не сможете получить имя.
Если бы вы объявили свой X
объект следующим образом:
var X = {
method1: function method1() {
A();
},
method2: function method2() {
A();
},
}
и ваша A
функция выглядит следующим образом:
function A() {
console.log(A.caller);
}
затем вызывается:
X.method1();
X.method2();
выдаст консольный вывод, подобный следующему:
function method1() {
A();
}
function method2() {
A();
}
, который затем можно будет проанализировать и получить имя вызывающего метода.
Или, если вы определили A
какэто:
function A() {
console.log(A.caller.prototype);
}
, тогда вывод будет отображать:
method1
method2
, где method1
и method2
- объекты-прототипы - так что вам также придется выполнить некоторые манипуляции.
РЕДАКТИРОВАТЬ: исправлено неверное копирование / вставка = A.caller.prototype -> A.caller.