我正在尝试获取保存在对象中的函数的文件和行位置。如果我将对象记录到Chrome开发工具中,则会看到以下内容:
我可以通过某种方式从代码访问[[FunctionLocation]]
内部吗?还是Chrome开发工具将其添加到对象中?如果是这样,我在开发Chrome开发工具扩展程序或Chrome扩展程序时是否可以检索功能位置?
答案 0 :(得分:1)
您仍然无法通过JavaScript访问内部属性。
该信息通过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页面很有见识。