我上了这个课:
class test{
constructor(){
document.addEventListener('click', handle);
this.handle = this.handle.bind(this);
}
handle(){
console.log(this); //returns document element
}
}
new test()
我将this
绑定到handle事件,但它仍返回document元素。
我尝试使用箭头功能,但它可以正常工作,但我想知道是否可以在不使用箭头功能的情况下做到这一点...
答案 0 :(得分:0)
在绑定之前分配。
您以为引用将被修改,但是,您只是为该属性分配了一个新值,而不是对其进行修改。
class test {
constructor() {
this.eleFromEstack = "Test"; // Just a test!
this.handle = this.handle.bind(this);
document.addEventListener('click', this.handle);
}
handle() {
console.log(this);
}
}
new test();
<h1>Click!!</h1>
答案 1 :(得分:0)
在向this
回调提供handler
函数时绑定addEventListener
值。
class Test{
field = "hello"
handle(){
console.log(this); //returns document element
}
constructor(){
document.querySelector("#container").addEventListener('click', this.handle.bind(this));
}
}
let test = new Test();
<div id="container">test</div>
答案 2 :(得分:-1)
没关系,我的本地服务器正在使用更新后的代码缓存JS文件