更改函数对象的输出以声明其名称

时间:2017-09-10 14:39:10

标签: javascript node.js read-eval-print-loop

我正在尝试在Javascript中做一些基本的lambda演算,我使用Node作为REPL。我定义了identity和mockinbird组合器,并以身份组合器作为输入运行mockingbird组合器。

I = f => f
M = f => f(f)
M(I)

具有身份组合器作为输入的mockinbird组合器产生身份组合器。最后一行给出以下输出。

[Function]

但是在这种情况下,如果它输出如下内容会更有用。

[Function: I]

这样我就可以看到正在打印的功能。我在此YouTube视频中看到了这一点:https://www.youtube.com/watch?v=3VQ382QG-y4

有人知道如何实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

较新版本的node.js已经这样做了(至少v6 +,可能更早)。如果您不想升级,那么您可以定义一个inspect方法,在检查时node.js将使用该方法:

Function.prototype.inspect = function () {
  return "[Function: " + this.name + "]";
}