我遇到了一篇由john resig解釋JavaScript繼承的文章。 http://ejohn.org/blog/simple-javascript-inheritance/任何人都可以解釋這個正則表達式
在這篇文章中有在起跑線上具有正則表達式
fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;
任何一個可以告訴我這個是什麼意思一個類實現代碼?
我遇到了一篇由john resig解釋JavaScript繼承的文章。 http://ejohn.org/blog/simple-javascript-inheritance/任何人都可以解釋這個正則表達式
在這篇文章中有在起跑線上具有正則表達式
fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;
任何一個可以告訴我這個是什麼意思一個類實現代碼?
fnTest
用於檢查方法是否在某處使用_super
。要做到這一點,該函數將根據正則表達式(在// Copy the properties over onto the new prototype
中)隱式轉換爲字符串(toString
)和。
但是,並不是所有的實現方法在調用toString
方法時真的會產生函數的源代碼。因此,此測試檢查function(){xyz;}
是否可以針對包含xyz
進行測試 - 如果不是,則始終使用/.*/
代替/\b_super\b/
。
有兩個正則表達式。第一個是/xyz/
,用於測試函數(強制爲字符串)是否匹配xyz
。它的確如此。然後,返回兩個regexen中的一個(在這種情況下,第一個是因爲測試通過)。
其中第一個是字邊界,後跟_super
後跟另一個字邊界,它至少可以匹配"_super"
," _super "
和word._super
。
第二個匹配零個或多個字符(即所有內容)。
搜索「正則表達式解釋器」。 – 2013-02-12 17:03:22
它根據xyz.test的結果爲fntest分配一個正則表達式。除此之外,你可以在瀏覽器的JS控制檯中輕鬆地玩這個,並從那裏找出它。 – 2013-02-12 17:05:25
@pst:這個比這更簡單。代碼的目的似乎是如果函數計算結果爲true,則返回'_super';如果計算結果爲false,則返回'。*'。 – 2013-02-12 17:05:34