2015-05-24 2 views
0

Я был в основном происходит через несколько JS функции в Интернете и наткнулся на следующий фрагмент кода:понимание как метод matchesSelector работает с вызовом()

(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') 

?

Было бы здорово, если бы кто-нибудь мог объяснить эту часть мне, поскольку я боролся с этим какое-то время.

ответ

2

Чтобы ответить на ваш вопрос:

«делает приведенный выше код эффективно перевести на следующее:? e.target.matches('ul a')»

Да, так оно и есть.

Как вы можете прочитать в Function.prototype.call() документации, то первый параметр, переданный call используется в качестве аргумента this в методе вы назвали call на.
Любые оставшиеся аргументы передаются методу.

+0

@DavidThomas: Исправлено. – Cerbrus

Смежные вопросы