Tag: 函数构造函数

Function构造函数的合法用法

正如反复所说,使用Function构造函数被认为是不好的做法(也参见ECMAScript语言规范 , 第 5版,第15.3.2.1节): new Function ([arg1[, arg2[, … argN]],] functionBody) (所有参数都是包含参数名称的string,最后(或唯一)的string包含函数体)。 扼要地说, 歌剧团队解释说,它是缓慢的: 每次Function构造Function在代表源代码的string上调用时,脚本引擎都必须启动将源代码转换为可执行代码的机制。 这对于性能来说通常是昂贵的,例如,比简单的函数调用容易百倍。 (Mark'Tarquin'威尔顿 – 琼斯) 虽然没有那么糟糕,但根据MDC上的这篇文章 (虽然我没有使用当前版本的Firefox自己testing)。 克罗克福德补充说 他引用语言的约定使得将一个函数体正确地表示为一个string是非常困难的。 在stringforms,早期的错误检查不能完成。 […]这是浪费内存,因为每个function都需要自己的独立实施。 另一个区别是 由Function构造函数定义的函数不会inheritance除全局作用域之外的任何作用域(所有函数都inheritance)。 ( MDC ) 除此之外,当您使用dynamic内容创buildnew Function时,必须注意避免注入恶意代码。 也就是说,TJ克罗德在一个答案中说 除了一些先进的边缘情况外,几乎从不需要类似的新函数(…)。 所以,现在我想知道:这些“先进的情况”是什么? Function构造函数是否有合法用途?