虽然函数的“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/

10-12 12:58