this的5种绑定方式
    1)默认绑定(非严格模式下this指向全局对象,严格模式下函数内的this指向undefined)
    2)隐式绑定(当函数引用有上下文对象时, 如 obj.foo()的调用方式, foo内的this指向obj)
    3)显示绑定(通过call或者apply方法直接指定this的绑定对象, 如foo.call(obj))
    4)new构造函数绑定,this指向新生成的对象
    5)箭头函数,this指向的是定义该函数时,外层环境中的this,箭头函数的this在定义时就决定了,不能改变