bind方法经常用于修改this指向,在模块化开发中有着很大的作用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>18_bind方法</title>
</head>
<body>
<button>点击</button>
<button>点击</button>
<button>点击</button>
<script>
var o = {
name:'andy'
}
function fn(a,b){
console.log(this);
console.log(a+b);
}
var f = fn.bind(o,1,2)
f()
//1.不会调用原来的函数 可以改变原来函数内部的this指向
//2.返回的是原函数改变this之后产生的新函数
//3.如果有的函数我们不需要立即调用,但是又想改变这个函数内部的this指向,此时用bind
//4.我们有一个按钮,当我们点击后,就禁用这个按钮,3秒之后开启
var btns = document.querySelectorAll('button')
for(var i = 0; i<btns.length;i++)
{
btns[i].onclick = function(){
this.disabled = true//这个this 指向的是 btn这个按钮
setTimeout(function(){
this.disabled = false
}.bind(this), 3000);//把定时器里面原本指向window的this改成指向btn对象
}
}
</script>
</body>
</html>