我遇到了一篇由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