Я хочу построить прокладку. У меня есть следующая прокладка, которая исключает только один раз и должна давать возвращаемое значение другим функциям. Это немного похоже на то, что http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/.возвращаемое значение анонимной функции
// WAY 1
matches: function(){
return Element.prototype.matchesSelector
|| Element.prototype.webkitMatchesSelector
|| Element.prototype.mozMatchesSelector
|| Element.prototype.msMatchesSelector
|| Element.prototype.oMatchesSelector
|| Element.prototype.matches
|| Element.prototype.webkitMatches
|| Element.prototype.mozMatches
|| Element.prototype.msMatches
|| Element.prototype.oMatches;
}(),
Теперь я хочу, чтобы использовать возвращаемое значение других функций:
Однако я не могу получить возвращаемое значение спичек, потому что он с анонимной функцией.
Это будет работать только, если я не Выполнение выражений функции сразу:
// WAY 2
matches: function(){
return Element.prototype.matchesSelector
|| Element.prototype.webkitMatchesSelector
|| Element.prototype.mozMatchesSelector
|| Element.prototype.msMatchesSelector
|| Element.prototype.oMatchesSelector
|| Element.prototype.matches
|| Element.prototype.webkitMatches
|| Element.prototype.mozMatches
|| Element.prototype.msMatches
|| Element.prototype.oMatches;
},
// Now it works, but the method is executed every time.
if(matches('ul')){
...
}
Как я могу сделать «WAY 1» работу?
Что-то неясно, особенно в отношении 'if (matches ('ul')) {': как вы справляетесь с вызовом функции с соответствующим контекстом? –
Я завернул «согласованную» -функцию внутри объекта DomUtil {matches: function()); ...}. Вызов if (DomUtil.matches ('ul')) выполняется в обработчике щелчка после загрузки dom. Тем не менее, он работает только, если я использую WAY 2 вместо WAY 1. Однако WAY 2, excecutes функция каждый раз, когда она вызывается, что бесполезно, потому что возвращаемое значение не отличается после выполнения. Следовательно, я хочу сделать «ПУТЬ 1» для работы. – nimo23