在JavaScript toString中获取价值

时间:2018-12-22 07:30:31

标签: javascript object prototype

我有一个非常简单的问题。

在Java语言中,

“你好” + function(){}

将打印 “ hellofunction(){}”

因为Function.prototype将调用其自己的toString方法,并将返回“ function(){}”

现在,我想将toString方法重写为:

Function.prototype.toString = function(){
return "my" + SOME_PROPERTY + "output"
}

在此自定义方法中,我想获取function(){} 我想知道如何在toString方法中获取当前值,因为我无法再次执行toString,因为它将以递归方式进行。

我希望最终输出为:

"myfunction(){}output"

1 个答案:

答案 0 :(得分:6)

通过保存对原始 Function.prototype.toString函数的引用,您以后可以在自定义.calltoString对其进行引用,从而为您提供所需的输出,并避免递归:

const origToString = Function.prototype.toString;
Function.prototype.toString = function(){
  return "my" + origToString.call(this) + "output"
}
console.log("" + function(){});