默认绑定
------------
隐式绑定
------------
显式绑定
(apply,call)
硬绑定解决绑定丢失问题(bind)
------------
new绑定
new调用函数时(构造函数调用时)发生步骤
1.创造一个全新的对象
2.这个新对象会被执行[[Prototype]]连接
3.这个新对象会绑定到函数调用的this
4.如果函数没有返回其他对象,自动返回这个新对象
new会改变硬绑定函数的this,使用new硬绑定函数主要是为了预先设置函数的一些参数
------------
判断this
1.是否在new中调用,this=>新创建的对象
2.时候通过apply,call或者硬绑定,this=>指定对象
3.时候有某个上下文对象中调用obj.foo(),this=>obj
4.this=>window(underfined)
================
以null,underfunded传入call。。会在调用时候被忽略,会把this默认绑定到全局对象
更安全的做法是使用Object.create(null)
==================
箭头函数的绑定无法被修改