为了账号安全,请及时绑定邮箱和手机立即绑定

事件绑定的this问题

事件绑定的this问题

绝地无双 2019-03-21 19:15:30
alpha方法挂在实例上beta方法挂在原型上它们打印出来的this却完全不同alpha打印出来是APP实例beta打印出来是button元素没想明白是为什么<button id="aa">aa</button><button id="bb">bb</button><script type="text/javascript">    class APP {        constructor() {            this.alpha = () => {                console.log(this);            }            const $aa = document.querySelector('#aa');            const $bb = document.querySelector('#bb');            $aa.addEventListener('click', this.alpha);            $bb.addEventListener('click', this.beta);        }        beta() {            console.log(this);        }    }    new APP();</script>
查看完整描述

4 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

箭头函数没有自己的this是外部作用域的this
所以箭头函数的this跟声明的位置有关
普通函数的this跟调用者有关

查看完整回答
反对 回复 2019-04-02
?
慕容3067478

TA贡献1773条经验 获得超3个赞

// 楼主 把alpha换成 这样,打印的结果是不是都是button了


this.alpha = function(){

    console.log(this);

}


查看完整回答
反对 回复 2019-04-02
?
翻阅古今

TA贡献1780条经验 获得超5个赞

alpha打印是在箭头函数之下打印的,箭头函数没有自己的this,换成普通的function就ok了


查看完整回答
反对 回复 2019-04-02
  • 4 回答
  • 0 关注
  • 480 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号