这是 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
属性。
最佳答案
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/