有兩個JavaScript「對象類」 MyClass1的和MyClass2被叫方的名稱,其中在MyClass1的方法(FOO)電話的方法(哞)在MyClass2中,我需要動態識別誰在調用函數原型moo from moo本身。如何識別AA的JavaScript原型法從另一個原型法
當我使用流行的建議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類和方法。
謝謝。我甚至不知道有可能命名方法功能。很簡單。順便說一句,你知道如何確定來自Class MyClass1的調用者(foo)嗎? – gextra
@gextra是的,這是可能的。我更新了我的答案,以演示如何。 –