Javascript 设置匿名函数';姓名

Javascript 设置匿名函数';姓名,javascript,node.js,anonymous-function,Javascript,Node.js,Anonymous Function,虽然函数的“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 fu

虽然函数的“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,我不确定这个问题对浏览器是否有效)

深入查看我找到的
函数.prototype.name
文档

要更改它,可以使用Object.defineProperty()

(在本节末尾)

这就是我想要的:

class O{
    constructor(fn){

        Object.defineProperty(fn,'name',{value:"lateNamedFunction", writable:false});

        this.myFn= fn;
    }
}

这可能会提供一些有趣的可能性…

为什么要这样做?@ashishsingh希望在调试时有一个更具描述性的堆栈匿名函数确实不会导致非常描述性的堆栈跟踪,有时这可能是个问题。但是如果它是为您而设计的,那么在定义函数时只需给它一个名称即可——首先,让它匿名是您的选择。或者,出于某种原因,您是否在寻找某种方法来动态更改已声明函数的名称?(不确定您是否可以这样做。)实际使用的是自制测试仪,这里的清晰度和灵活性非常有用。