секунд не было нажатий". Используйте Proxy и Object.defineProperty для решения. Если требуется более формализованный код, он может выглядеть следующим образом: javascript let lastClickTime = null; const handler = { get: function (target, prop) { if (prop === 'click') { return function (...args) { const currentTime = new Date().getTime(); if (lastClickTime !== null) { const timeDifference = currentTime - lastClickTime; if (timeDifference > 5000) { console.log('Более 5 секунд не было нажатий'); } } lastClickTime = currentTime; return target[prop].apply(target, args); }; } return Reflect.get(...arguments); } }; const proxy = new Proxy(document.body, handler); Object.defineProperty(proxy, 'addEventListener', { enumerable: true, configurable: true, writable: true, value: function (...args) { if (args[0] === 'click') { const originalClickHandler = args[1]; args[1] = function (...clickArgs) { const currentTime = new Date().getTime(); if (lastClickTime !== null) { const timeDifference = currentTime - lastClickTime; if (timeDifference > 5000) { console.log('Более 5 секунд не было нажатий'); } } lastClickTime = currentTime; return originalClickHandler.apply(this, clickArgs); }; } return Reflect.apply(...arguments); } });
Этот код использует Proxy и Object.defineProperty для перехвата событий клика и отслеживания времени между ними.
// let cc = { 'newTime': new Date().getTime() }
// Object.defineProperty(cc, 'cliTime', {
// get() {
// return this.newTime
// },
// set(value) {
// if (value - this.newTime > 5000) {
// console.log('5s内没点了')
// }
// this.newTime = value
// }
// })
// document.querySelector('#bod').onclick = function () {
// console.log('disn')
// cc.cliTime = new Date().getTime()
// }
let dd = {'_oldTime':new Date().getTime()}
var pro = new Proxy(dd,{
get(target,key){
// return ()=>{
return ()=>2 // постарайтесь вернуть функцию, иначе будет ошибка
// }
},
set(target,key,value){
console.log(value)
console.log(target['_oldTime'])
console.log(this) // здесь this указывает на текущий объект, то есть на второй параметр Proxy, а target — на первый параметр;
if(value-target['_oldTime']>5000) {
console.log('5 секунд не нажато')
}
target['_oldTime'] = value
target[key]=value
}
})
document.querySelector('#bod').onclick = function () {
console.log('disn')
pro.time = new Date().getTime()
console.log(pro==2) // true выводит объект
}