老师请检查下代码对错,这种写法我不懂,能讲下吗,另一种写法绑点处法事件,之后写个 点时器我懂

来源: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后面缺少等于号,建议添加上,如下:

https://img.mukewang.com/climg/61c133fd09037e2104210095.jpg

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

https://img.mukewang.com/climg/61c1347609d19fa807770619.jpg

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

https://img.mukewang.com/climg/61c1351809427e7206280625.jpg

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

https://img.mukewang.com/climg/61c135b2095ea5b812840682.jpg

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

https://img.mukewang.com/climg/61c1366c09e7dfba10300664.jpg

所以可以在点击函数内部,提前声明变量that(自定义变量名即可)保存this,在定时器内部通过that访问time属性值实现效果。

如果不是指这里,可以图文节结合,详细描述下具体指的是哪里,便于帮助同学准确的定位与解决问题。

祝学习愉快~

0

0 学习 · 17877 问题

查看课程