获取外部函数名指的是在类中获取调用当前类的函数的名称。在JavaScript中,可以通过arguments.callee.caller来获取调用函数的信息,进而获取函数名。
具体步骤如下:
- 定义类,并在其中定义一个属性名为callerName的函数。代码如下:
class Test {
constructor() {
this.callerName = this.getCallerName();
}
getCallerName() {
return this.constructor.name;
}
showCaller() {
console.log(this.callerName);
}
}
- 在调用该方法时,可以在调用类的函数中通过构造函数名获取调用函数名称。示例代码如下:
function callTest() {
let t = new Test();
t.showCaller();
}
callTest(); // 输出"callTest"
- 另一种方式是使用arguments.callee.caller.name来获取调用函数名称。示例代码如下:
function callTest2() {
let t = new Test2();
t.showCaller();
}
class Test2 {
constructor() {
this.callerName = "";
this.getCallerName();
}
getCallerName() {
if(arguments && arguments.callee && arguments.callee.caller) {
this.callerName = arguments.callee.caller.name;
}
}
showCaller() {
console.log(this.callerName);
}
}
callTest2(); // 输出"callTest2"
在这个示例中,通过在构造函数中调用getCallerName函数,获取到了arguments.callee.caller.name。如果获取到了,则将其赋值给callerName属性。最终在showCaller函数中输出调用函数名称。
需要注意的是,arguments.callee是一个指向正在执行的函数自身的引用,是一个不稳定的特殊属性。使用arguments.callee.caller可能会引起性能问题或会在未来版本的JavaScript中不再存在。因此,可以通过第一种方式来更加稳定和可靠地获取调用函数名称。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js类中获取外部函数名的方法 - Python技术站