bind和apply,call都是用来改变this用的,只不过bind返回一个函数,不是立即调用。

先给window下增加一个str属性

window.str = '全局window下的str'
let a = {
    str:'a对象内部的str',
    fn:function(){
      return this.str
    }
}
a.fn()

调用a.fn打印出来是'a对象内部的str' 再看当我们把fn函数bind(this)以后,这个this就是全局window

let b = {
    str:'a对象内部的str',
    fn:function(){
      return this.str
    }.bind(this)
}
b.fn()

调用b.fn(),打印出来是'全局window下的str'