javascript - 在 V8 JavaScript (Chrome & Node.js) 中访问行号

标签 javascript node.js google-chrome v8

使用过 C 等语言的 JavaScript 开发人员经常错过使用某些类型的内省(introspection)的能力,例如记录行号,以及当前方法是从哪个方法调用的。好吧,如果您使用的是 V8(Chrome、Node.js),您可以使用以下内容。

最佳答案

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();
  }
});

console.log(__line);

上面会记录19

结合 arguments.callee.caller 你可以更接近你在 C 中通过宏获得的有用的日志类型。

关于javascript - 在 V8 JavaScript (Chrome & Node.js) 中访问行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11386492/

相关文章:

javascript - 如何在 javascript 中的正则表达式上运行正则表达式?

Javascript 数组,为每个增量创建一个嵌套数组

asp.net - 如何在 ASPX 项目中使用 node.js?

javascript - 谷歌浏览器扩展程序 : How to find out if a user has signed in to the Chrome browser?

javascript - jQuery - $(myobj).children(...).children(...).children(...) 的 DOM 速记

可以替代alerbox的Javascript和CSS。警告框太不专业了

node.js - 我想在特定时间后更改对象的值

node.js - 如何从完成响应中返回 OpenAI 的文本?

javascript - CSS 注入(inject)在 content_scripts 中使用声明失败,但在通过注入(inject)的 JavaScript 加载时有效

google-chrome - 自定义 Chromium/Google Chrome 错误页面