虽然函数的“name”属性是只读的,但是有什么技巧可以设置它吗?
下面是一个简单的例子,它将有助于:
class O{
myFn;
constructor(fn){
this.myFn= fn; // Here I want to set the name of fn / this.myFn
}
}
new O( () => {
console.log("hello"); // breakpoint here the function name is "(anonymous function)"
}).myFn();
我可以根据定义来命名:
new O( function namedFunction () {
console.log("hello");
}).myFn();
但我正在寻找一种稍后命名/重命名它的方法。
(我正在处理node.js我不确定这个问题是否对浏览器有效)
最佳答案
深入研究我发现的文档
不过,要更改它,可以使用object.defineProperty()。
(在章节末尾)
所以这就是我想要的:
class O{
constructor(fn){
Object.defineProperty(fn,'name',{value:"lateNamedFunction", writable:false});
this.myFn= fn;
}
}
这可能会提供一些有趣的可能性…
关于javascript - 设置匿名函数的名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52329609/