理解matchesSelector方法如何与call()一起使用

时间:2015-05-24 19:40:20

标签: javascript

我基本上是在线浏览一些JS函数,并且遇到了以下代码片段:

(function(doc) {
   matches = 
      doc.matchesSelector ||
      doc.webkitMatchesSelector ||
      doc.mozMatchesSelector ||
      doc.oMatchesSelector ||
      doc.msMatchesSelector;
})(document.documentElement);

document.addEventListener('click', function(e) {
   if ( matches.call( e.target, 'ul a') ) {
      // proceed
   } 
}, false);

上面的代码基本上是检查目标元素是否与e.target匹配,现在我明白call()如何在Js中工作,但不知怎的,我无法理解以下内容如何工作:

matches.call( e.target, 'ul a') 

我看到call()在功能上被大量使用,但上面的内容非同寻常,

上述代码是否有效地转换为以下::

e.target.matches('ul a')   

如果有人可以向我解释这一部分,那将是很好的,因为我一直在努力解决这个问题。

1 个答案:

答案 0 :(得分:2)

回答你的问题:

"上述代码是否有效地转换为以下内容:e.target.matches('ul a')?"

是的。

正如您在Function.prototype.call()文档中所读到的那样,传递给call的第一个参数在您称为this的方法中用作call参数。
任何剩余的参数都会传递给方法。