我检查了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])
他们做了什么?
on firebug
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
答案 0 :(得分:0)
我认为
fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;
是浏览器功能检测的一种形式。他正在将一个函数对象传递给“test”方法,该方法应该将函数对象转换为字符串。如果其结果确实包含字符串“xyz”,则“fnTest”变量初始化为正则表达式/\b_super\b/
。如果没有,那么当JavaScript环境由于某种原因(提示:IE)没有对这样的函数进行字符串化时就是这种情况,那么“fnTest”被初始化为一个匹配任何东西的正则表达式。