代码之家  ›  专栏  ›  技术社区  ›  tru7

设置匿名函数的名称

  •  2
  • tru7  · 技术社区  · 6 年前

    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();
    

    但我正在寻找一种方法来命名/重命名它以后。

    1 回复  |  直到 6 年前
        1
  •  2
  •   tru7    6 年前

    戳进 Function.prototype.name 我找到的文件

    (在本节末尾) https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name#Inferred_function_names )

    所以这就是我想要的:

    class O{
        constructor(fn){
    
            Object.defineProperty(fn,'name',{value:"lateNamedFunction", writable:false});
    
            this.myFn= fn;
        }
    }
    

    这可能提供一些有趣的可能性。。。