我遇到了john resig解释JavaScript继承的一篇文章。 http://ejohn.org/blog/simple-javascript-inheritance/
在这篇文章中有一个类实现代码,其中起始行有一个正则表达式
fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;
任何人都可以告诉我这是什么意思吗?
答案 0 :(得分:3)
fnTest
用于检查方法是否在某处使用_super
。为此,该函数隐式转换为正则表达式的字符串(toString
)和test
ed(在// Copy the properties over onto the new prototype
中)。
然而,当调用toString
方法时,并非所有实现都真正产生函数的源代码。因此,此测试会检查function(){xyz;}
是否可以针对包含xyz
进行测试 - 如果不是,则使用始终匹配的/.*/
代替/\b_super\b/
。
答案 1 :(得分:1)
有两个正则表达式。第一个是/xyz/
,用于测试函数(强制转换为字符串)是否与xyz
匹配。确实如此。然后,返回两个regexen中的一个(在这种情况下,第一个是因为测试通过)。
其中第一个是单词边界,后跟_super
,后跟另一个字边界,至少可以匹配"_super"
," _super "
和word._super
。
第二个匹配零个或多个字符(即所有内容)。