和call,apply一样,也是用来改变函数中的this关键字的,只不过基于bind改变this,当前方法并没有执行,类似于预先改变this
let obj = {name:'obj'};let fn = function(){console.log(this.name);}document.body.onclick = fn; //当事件触发,this指向body// 点击body。让fn中的this指向objdocument.body.onclick = fn.call(obj); // 这里fn.call已经执行将this指向了obj,然后将返回结果给了bodydocument.body.onclick = function(){fn.call(obj)}//这里点击body其实执行了2个函数,首先匿名函数执行,然后fn的this指向到了objdocument.body.onclick = fn.bind('obj');// bind 的好处是:通过bind方法只是预先把fn中的this指向了obj,不过此时fn函数并没有执行,当点击事件触发后,才会执行fn(call,apply方法都是改变this的同时立即执行了方法)在ie6~8不支持bind方法,预先做啥事情的思想被称为“柯理化函数”
