1 回答
TA贡献1884条经验 获得超4个赞
正如ECMAScript 5.1 规范所说,该toString
方法返回一个具有FunctionDeclaration语法的字符串:
函数.prototype.toString ()
返回函数的依赖于实现的表示。此表示具有FunctionDeclaration的语法。请特别注意,表示字符串中空格、行终止符和分号的使用和放置取决于实现。
该
toString
功能不是通用的;如果它的this值不是一个 Function 对象,它会抛出一个TypeError异常。因此,它不能转移到其他类型的对象作为方法使用。
FunctionDeclaration具有以下语法:
函数声明:
函数 标识符 ( FormalParameterList opt ){ FunctionBody }
正式参数列表:
标识符
FormalParameterList , 标识符
和标识定义如下:
标识符::
IdentifierName 但不是 ReservedWord
标识符名称::
IdentifierStart
IdentifierName IdentifierPart标识符开始::
UnicodeLetter
$
_
\ UnicodeEscapeSequence标识符部分::
IdentifierStart
UnicodeCombiningMark
UnicodeDigit
UnicodeConnectorPunctuation
结论
虽然它不是一个很好的获取函数名的方式(但在 ES5 中是唯一的方式),但如果你让它解析上面列出的所有可能性,它可以在 ES5 中安全地工作。
但是 ES6 标准修改了 的规范.toString()
,这意味着更多可能的语法,使得在其中使用这种方法是不安全的。
因此,仅在 ES6 之前的版本中使用此方法。
添加回答
举报