0

我看到了 john resig 的一篇文章,解释了 JavaScript 继承。 http://ejohn.org/blog/simple-javascript-inheritance/

在这篇文章中有一个类实现代码,其中起始行有一个正则表达式

fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;

谁能告诉我这是什么意思?

4

2 回答 2

3

fnTest用于检查方法是否在某处_super使用。为此,该函数被隐式转换为字符串 ( toString) 并针对正则表达式 (in ) 进行test编辑// Copy the properties over onto the new prototype

然而,并不是所有的实现都在调用方法时真正产生函数的源代码toString。因此,此测试检查是否function(){xyz;}可以针对包含进行测试xyz- 如果不是,则使用始终匹配/.*/而不是/\b_super\b/.

于 2013-02-12T17:09:32.053 回答
1

有两个正则表达式。第一个是 just /xyz/,用于测试函数(强制为字符串)是否匹配xyz。确实如此。然后,返回两个正则表达式之一(在本例中是第一个,因为测试通过了)。

其中第一个是单词边界,_super然后是另一个至少可以匹配的单词边界"_super"" _super "word._super

第二个匹配零个或多个字符(即所有字符)。

于 2013-02-12T17:05:17.057 回答