有两个 javascript“对象类” MyClass1和MyClass2,其中 MyClass1 中的方法 ( foo )调用MyClass2 中的方法 ( moo ),我需要动态识别谁从moo本身调用函数原型moo 。
当我使用普遍建议的 arguments.callee.caller 访问器时,我无法派生名称。总的来说,我需要从方法moo中知道它是从 MyClass1 的 moo 方法或其他方法中调用的。
function MyClass1() {
this.myAttribute1 = 123;
}
MyClass1.prototype.foo = function () {
var myclass2 = new MyClass2();
myclass2.moo();
};
function MyClass2() {
this.mySomething = 123;
}
MyClass2.prototype.moo = function () {
console.log("arguments.callee.caller.name = " +
arguments.callee.caller.name);
console.log("arguments.callee.caller.toString() = " +
arguments.callee.caller.toString());
};
在上面的示例中,arguments.callee.caller.name的结果是空的,而调用者的 toString() 方法显示了函数的主体,但不显示其所有者类或方法的名称。
这种需要的原因是我想创建一个调试方法来跟踪从方法到方法的调用。我广泛使用 Object 类和方法。