我基本上是在线浏览一些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')
如果有人可以向我解释这一部分,那将是很好的,因为我一直在努力解决这个问题。
答案 0 :(得分:2)
回答你的问题:
"上述代码是否有效地转换为以下内容:e.target.matches('ul a')
?"
是的。
正如您在Function.prototype.call()
文档中所读到的那样,传递给call
的第一个参数在您称为this
的方法中用作call
参数。
任何剩余的参数都会传递给方法。