javascript - 如何命名箭头函数以使该名称在 Chrome CPU 分析器中可用

标签 javascript google-chrome google-chrome-devtools arrow-functions

这是 How do I write a named arrow function in ES2015? 的变体问题,尽管具体目标是以一种可用于 Chrome CPU 分析器的方式命名函数对象。

我尝试过以下方法:

let unnamed;

unnamed = () => {

};

Object.defineProperty(unnamed, 'name', {
    value: 'XXX'
});

Object.defineProperty(unnamed.constructor, 'name', {
    value: 'YYY'
});

Object.defineProperty(unnamed, 'displayName', {
    value: 'ZZZ'
});

console.log('unnamed.name', unnamed.name);
console.log('unnamed.constructor.name', unnamed.constructor.name);
console.log('unnamed.displayName', unnamed.displayName);

export default unnamed;

但是,无论我做什么,CPU 分析器都会将其显示为(匿名函数)

有趣的是,如果抛出错误,堆栈跟踪将使用 displayName 属性。

Error stack

最佳答案

CPU 分析器不使用 displayName 或 Function.name。还有另一个问题:https://code.google.com/p/chromium/issues/detail?id=559532

对于堆栈跟踪函数名称解析算法,请使用列表中第一个定义的属性:displayName、Function.name、V8 函数推断名称。

关于javascript - 如何命名箭头函数以使该名称在 Chrome CPU 分析器中可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35156433/

相关文章:

php - 将 PHP 变量传递给 Javascript 动态添加的文本框

javascript - 将变量传递给新创建的选项卡

google-chrome - 网络选项卡上的这些数字是什么意思?

google-chrome - 如何通过快捷键清除Chrome控制台?

asp控件中的javascript代码管理

javascript - JS 克尼克斯 : getting foreign keys for a table

javascript - PHP - 在提交后调用函数?

javascript - 字段焦点在 Firefox 中不起作用,setTimeout(function(){id.focus();},0);

html - 跨浏览器 - CSS 填充问题

google-chrome - 使用 ChromeDriver 和 Chrome DevTools 协议(protocol)进行多客户端远程调试