当前位置: 首页 > 面试题库 >

在V8 JavaScript中访问行号(Chrome和Node.js)

施俊明
2023-03-14
问题内容

在诸如C之类的语言上花费时间的JavaScript开发人员经常会错过使用某些类型的自省功能的能力,例如记录行号以及调用当前方法的方法。好吧,如果您使用的是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中获得的有用日志的类型。



 类似资料:
  • 问题内容: 我试图使用angular $ resourses访问在localhost中运行的api,chrome控制台给我说ERR_INSECURE_RESPONSE的错误。 我尝试在Chrome中禁用网络安全。还是一样的错误。这是我使用的角度工厂。如何绕过此错误并测试我的应用。 问题答案: 您必须先进行身份验证,然后将每个请求与auth令牌一起发送。 我使用的是RestAngular,因此我的设

  • 我有一个Lambda函数,用于部署无服务器框架的无头铬蟒蛇硒,在本地运行良好,但在lambda上崩溃。 一些基本的细节:(驱动程序信息:chromeDrive=2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706),平台=Linux4.14.231-180.360.amzn2。x86_64x86_64) Chromium版本:89xx硒==3.

  • 我正在开发一个chrome扩展,遇到了一个大问题。 奇怪的是,我可以访问iframe的html。因此,这段代码在chrome扩展中可以完美地工作: 我尝试将“all_frames”:true放入清单文件中,但没有成功:(

  • 我正在使用selenium-python,并且希望执行一个javascript脚本(通过。 此脚本使用,该脚本仅在Chrome上可用。我成功地使用了 启动chrome浏览器。使用执行脚本时,我得到如下内容:

  • 问题内容: 我碰到了以下内容 在这种情况下,和是什么意思? 问题答案: 它称为条件运算符(是三元运算符)。 它有以下形式:?: 认为“ then”和“ else”。 您的代码等同于

  • 问题内容: 在JSX中,如何从带引号的属性值内部引用值? 例如: 产生的HTML输出为: 问题答案: React(或JSX)不支持在属性值内进行变量插值,但您可以将任何JS表达式放在花括号内作为整个属性值,因此可以这样做: