<分区>
我最近使用了一个 little utility library作者:John Resig,称为 inherit.js .我通常试图理解我正在使用的库的核心部分,经过一番摸索之后我终于理解了代码的难点(即他如何调用父类(super class)的相应方法)。
我没有得到的 1% 位与正则表达式有关
fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;
- 正则表达式/xyz/针对函数 进行了测试。两者 MSDN和 MDN声明
test
将字符串作为参数。没有提到功能,但由于控制台没有错误,我想它一定会飞,但它是如何工作的? - 下一个 WTF 是函数体是
xyz;
。该函数无法执行,否则会导致“ReferenceError: xyz is not defined
”。正确的?那么它有什么作用呢? - 如果测试结果为真,则
fnTest
等于在单词边界上检查_super
的正则表达式,否则是匹配任何内容的正则表达式。双WTF;再次如何以及为什么。
稍后有一段相关的代码,其中使用了这个正则表达式。
// Check if we're overwriting an existing function
prototype[name] = typeof prop[name] == "function" &&
typeof _super[name] == "function" && fnTest.test(prop[name])
? aFunctionThatCanCallSuper /* Lots of code */
: prop[name];
我在这里想知道的一点是 fnTest.test(prop[name])
。我了解所有其他测试,这些测试检查属性是否存在,是一个函数等,但不了解正则表达式测试的作用。有人吗?