Javascript:在运行时检索文件和函数的行位置

时间:2019-05-09 19:42:22

标签: javascript google-chrome-devtools

我正在尝试获取保存在对象中的函数的文件和行位置。如果我将对象记录到Chrome开发工具中,则会看到以下内容:

enter image description here

我可以通过某种方式从代码访问[[FunctionLocation]]内部吗?还是Chrome开发工具将其添加到对象中?如果是这样,我在开发Chrome开发工具扩展程序或Chrome扩展程序时是否可以检索功能位置?

1 个答案:

答案 0 :(得分:1)

  1. 您仍然无法通过JavaScript访问内部属性。

  2. 该信息通过Chrome DevTools协议(InternalPropertyDescriptor)公开。这可以通过例如Node.js观察到:

    public interface ArithmeticCalculator {
    
        public double add(double a, double b);
        public double sub(double a, double b);
    
    }
    
    @Component("arithmeticCalculator")
    @LoggingRequired
    public class ArithmeticCalculatorImpl implements ArithmeticCalculator {
    
        public double add(double a, double b) {
            return a + b;
        }
    
        public double sub(double a, double b) {
            return a - b;
        }
    
    }
    

    收益

    global.a = () => { /* test function */ };
    
    const s = new (require('inspector').Session)();
    s.connect();
    
    let objectId;
    s.post('Runtime.evaluate', { expression: 'a' }, (err, { result }) => {
      objectId = result.objectId;
    });
    s.post('Runtime.getProperties', { objectId }, (err, { internalProperties }) => {
      console.log(internalProperties);
    });
    

    使用Node.js v12.3.1。

    Chrome扩展程序可以通过chrome.debugger与Chrome DevTools协议进行交互。我对DevTools扩展的工作方式并不熟悉,但是您可能会发现Integrating with DevTools页面很有见识。