我有一个非常简单的问题。
在Java语言中,
“你好” + function(){}
将打印 “ hellofunction(){}”
因为Function.prototype将调用其自己的toString
方法,并将返回“ function(){}”
现在,我想将toString方法重写为:
Function.prototype.toString = function(){
return "my" + SOME_PROPERTY + "output"
}
在此自定义方法中,我想获取function(){}
我想知道如何在toString方法中获取当前值,因为我无法再次执行toString
,因为它将以递归方式进行。
我希望最终输出为:
"myfunction(){}output"
答案 0 :(得分:6)
通过保存对原始 Function.prototype.toString
函数的引用,您以后可以在自定义.call
中toString
对其进行引用,从而为您提供所需的输出,并避免递归:
const origToString = Function.prototype.toString;
Function.prototype.toString = function(){
return "my" + origToString.call(this) + "output"
}
console.log("" + function(){});