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 之前的版本中使用此方法。
添加回答
舉報