首页 > 试题广场 >

执行以下程序,要求当用户点击按钮1秒后禁用按钮,以下选项的做

[单选题]

执行以下程序,要求当用户点击按钮1秒后禁用按钮,以下选项的做法,不符合要求的是()

<button>点击</button>

<script>

    var btn = document.querySelector('button');

</script>

  • btn.onclick = function(){

    var that = this;

    setTimeout(function(){that.disabled = true;},1000)

    }

  • btn.onclick = function(){

    setTimeout(function(){this.disabled = true;},1000)

    }

  • btn.onclick = function(){

    setTimeout(()=>{

    this.disabled = true;

    },1000)

    }

  • btn.onclick = function(){

    setTimeout(function(){this.disabled = true;}.bind(this),1000)

    }

this的指向问题。 A:用that来保存当前按钮的this B:回调函数执行时this指向了window C:箭头函数的this为外层的this,也就是按钮 D:用bind来绑定当前this
编辑于 2021-12-15 00:12:10 回复(0)
解决settimeout内部this指向window的三种解决方案
1.保存外部this
2.apply、call、bind绑定
3.箭头函数
发表于 2022-03-06 21:21:51 回复(1)
不符合要求🤣
发表于 2022-01-08 08:50:37 回复(0)
匿名函数的this指向window,剪头函数的this指向上下文btn
发表于 2022-02-12 10:31:31 回复(0)
解决settimeout内部this指向window的三种解决方案:
1.保存外部this
2.apply,call,bind绑定
3.箭头函数
发表于 2022-07-11 17:03:22 回复(0)
我还是不懂诶,D选项虽然用了bind修改了指向,但this指向的不还是settimeout吗,settimeout不就是windows的……
发表于 2022-05-10 22:14:33 回复(3)
A this指向btn (因为var定义了that=this) B 定时器的this指向window,无法在window上禁用按钮C 箭头函数的this指向其上下文,该箭头函数的上下文是btn D bind改变了this的指向使其指向btn
发表于 2023-06-04 13:55:12 回复(0)