Only bind listeners when necessary

This commit is contained in:
ahocevar
2019-08-29 22:35:32 +02:00
parent aca4a39863
commit fe83d1b32c
2 changed files with 25 additions and 20 deletions

View File

@@ -32,14 +32,19 @@ import {clear} from './obj.js';
* @return {ListenerFunction} Bound listener.
*/
export function bindListener(listenerObj) {
const boundListener = function(evt) {
const listener = listenerObj.listener;
const bindTo = listenerObj.bindTo || listenerObj.target;
if (listenerObj.callOnce) {
unlistenByKey(listenerObj);
}
return listener.call(bindTo, evt);
};
let boundListener;
if (listenerObj.bindTo || listenerObj.callOnce) {
boundListener = function(evt) {
const listener = listenerObj.listener;
const bindTo = listenerObj.bindTo || listenerObj.target;
if (listenerObj.callOnce) {
unlistenByKey(listenerObj);
}
return listener.call(bindTo, evt);
};
} else {
boundListener = listenerObj.listener;
}
listenerObj.boundListener = boundListener;
return boundListener;
}