javascript - 如何在 Node Js中获取调用者姓名

标签 javascript node.js

我正在使用 arguments.callee.caller.name 来获取调用此函数的函数的名称。

例如:

class B {
  a = 0;
  called_from = false;
  setA = (asume)=>{
    this.a = assume;
    this.called_from = arguments.callee.caller.name;
    console.log(this.called_from);
  };

  callA = ()=>{
    this.setA();
  };
}

现在我想在日志中获取 callA 名称。

最佳答案

使用来自 Accessing line number in V8 JavaScript (Chrome & Node.js) 的信息

您可以添加一些原型(prototype)以提供从 V8 访问此信息的权限;

Object.defineProperty(global, '__stack', {
get: function() {
        var orig = Error.prepareStackTrace;
        Error.prepareStackTrace = function(_, stack) {
            return stack;
        };
        var err = new Error;
        Error.captureStackTrace(err, arguments.callee);
        var stack = err.stack;
        Error.prepareStackTrace = orig;
        return stack;
    }
});

Object.defineProperty(global, '__line', {
get: function() {
        return __stack[1].getLineNumber();
    }
});

Object.defineProperty(global, '__function', {
get: function() {
        return __stack[1].getFunctionName();
    }
});

function foo() {
    console.log(__line);
    console.log(__function);
}

foo()

关于javascript - 如何在 Node Js中获取调用者姓名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61199032/

相关文章:

javascript - 使用 React 进行多个 AJAX 请求

JavaScript 数组和闭包

javascript - AngularJS。有关服务的正确双向数据绑定(bind)的最佳实践

node.js - ExpressJS res.render() 错误(JSON.stringify 无法处理循环引用)

node.js - 如何使用 node-orm 导出模型?

javascript - 简单的 ng-include 不起作用

Javascript分配内存问题

json - 在 Node.js 中使用 pkg 和 bootstrap

javascript - 无法与 Sequelize 建立一对一关系

node.js - Socket.io/Hapi 不工作 Azure 应用服务 (Linux)