2

我检查了 Mollzia 和 MS 文档,我只找到 regex.test(str) API。但是,我在 John Resig 的 Class.js 中看到了 test(function(){}) 的用法,这让我很困惑。

源代码:class.js

编码:

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

fnTest.test(prop[name])

他们做什么?

在萤火虫上

console.log(/xyz/.test(function(){xyz;}))//true;
console.log(/xyz/.test(function(){}))//false;
console.log(/xyz/.test(function(){console(xyz);}))//true; console(xyz) not run
4

1 回答 1

0

我觉得

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

是浏览器特征检测的一种形式。他将函数对象传递给“test”方法,该方法应该将函数对象转换为字符串。如果结果确实包含字符串“xyz”,则“fnTest”变量被初始化为正则表达式/\b_super\b/。如果不是,当 JavaScript 环境由于某种原因不会对这样的函数进行字符串化(提示:IE)时,就会出现这种情况,然后“fnTest”被初始化为一个匹配任何东西的正则表达式。

于 2013-10-10T22:47:45.050 回答