老师请检查下代码对错,这种写法我不懂,能讲下吗,另一种写法绑点处法事件,之后写个 点时器我懂
来源:3-12 箭头函数的应用
球球不一般
2021-12-20 22:19:02
const btn = document.getElementById('btn');
const result = document.getElementById('result');
const timer{
timer:0,
start: function () {
// this
btn.addEventListener(
'click',
() => {
// this
setInterval(() => {
console.log(this);
this.time++;
result.innerHTML = this.time;
}, 1000);
},
false
);
}
};
timer.start();
搜索
复制
1回答
好帮手慕慕子
2021-12-21
同学你好,对于你的问题解答如下:
1、timer后面缺少等于号,建议添加上,如下:

2、前面定义的属性名为timer, 而使用时写成了time,建议修改为一致,如下:

3、同学说的另一种写法指的是下图所示代码吗?

如果是的话,那么这段代码的定时器中回调函数是普通函数,该函数内部的this指向window,可以通过console.log输出查看,如下:

time属性是添加在timer对象上的,window上并没有设置time,此时函数内部通过this无法获取到time属性值实现效果。而点击事件对应的函数内部this指向timer对象,可以通过console.log输出查看,如下:

所以可以在点击函数内部,提前声明变量that(自定义变量名即可)保存this,在定时器内部通过that访问time属性值实现效果。
如果不是指这里,可以图文节结合,详细描述下具体指的是哪里,便于帮助同学准确的定位与解决问题。
祝学习愉快~
相似问题