callee sample 5 - garevna/js-course GitHub Wiki
:arrow_backward: arguments.callee
:coffee: 5
В этом примере создаются анонимные функции, которые обрабатывают событие click кнопок
Каждая функция "накапливает" данные о времени клика на кнопке в массиве arguments.callee.res
var buttons = []
for ( var n = 0; n < 5; n++ ) {
buttons [ n ] = document.body.appendChild (
document.createElement( 'button' )
)
buttons [ n ].innerText = n
buttons [ n ].onclick = function ( event ) {
if ( !arguments.callee.res )
arguments.callee.res = []
arguments.callee.res.push ( event.timeStamp )
console.log ( arguments.callee.res )
}
}
Модифицируем этот код:
var buttons = []
for ( var n = 0; n < 5; n++ ) {
buttons [ n ] = document.body.appendChild (
document.createElement( 'button' )
)
buttons [ n ].innerText = n
buttons [ n ].onclick = function ( event ) {
if ( !arguments.callee.clicksTime )
arguments.callee.clicksTime = []
arguments.callee.clicksTime.push ( event.timeStamp )
console.log ( arguments.callee.clicksTime )
arguments.callee.res = arguments.callee.clicksTime.length > 1 ?
arguments.callee.clicksTime [ arguments.callee.clicksTime.length - 1 ] -
arguments.callee.clicksTime [ arguments.callee.clicksTime.length - 2 ] : 0
console.info ( `Интервал между последними кликами: ${arguments.callee.res}` )
}
}
Что теперь делает каждый обработчик клика на кнопке ?
:arrow_backward: arguments.callee