Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将函数转换为其字符串表示形式_Javascript_Angularjs_Ecmascript 6 - Fatal编程技术网

Javascript 将函数转换为其字符串表示形式

Javascript 将函数转换为其字符串表示形式,javascript,angularjs,ecmascript-6,Javascript,Angularjs,Ecmascript 6,我知道在函数对象上调用toString,会得到函数定义的字符串表示,如: 函数foo(){/*…*/}.toString()对我来说很好 但是 我看到作者在很多地方都使用了这种模式,其背后的原因可能是什么?绕过funcName.toString=function(){return“not what you expected”}@AlexK。你是说有人可能会对函数定义进行monkey路径修改?是的,对重写toString.t.w没有任何限制,这不是monkey补丁。事实上,这种方法依赖的不是猴子补

我知道在函数对象上调用
toString
,会得到函数定义的字符串表示,如:

函数foo(){/*…*/}.toString()对我来说很好

但是


我看到作者在很多地方都使用了这种模式,其背后的原因可能是什么?

绕过
funcName.toString=function(){return“not what you expected”}
@AlexK。你是说有人可能会对函数定义进行monkey路径修改?是的,对重写toString.t.w没有任何限制,这不是monkey补丁。事实上,这种方法依赖的不是猴子补丁。这种方法可以防止意外地创建/重写
toString
属性到
fn
对象。e、 g.
fn.toString=1
然后调用
fn.toString()
将抛出
未捕获类型错误的错误:fooFn.toString不是函数(…)
。。。
function stringifyFn(fn) {
  // Support: Chrome 50-51 only
  // Creating a new string by adding `' '` at the end, to hack around some bug in Chrome v50/51
  // (See https://github.com/angular/angular.js/issues/14487.)
  // TODO (gkalpak): Remove workaround when Chrome v52 is released
  return Function.prototype.toString.call(fn) + ' ';
}