根据优先级判断this在某个调用位置应用的是几条规则
1、函数是否在new中调用(new绑定),如果是的话,this绑定的是新创建的对象
var bar = new foo()
2、函数是否通过call、apply(显式绑定)或者硬绑定调用,如果是的话,this绑定的是指定的对象
var bar =foo.call(obj2)
3、函数是否在某个上下文对象中调用(隐式绑定),如果是的话,this绑定的是那个上下文对象
var bar=obj1.foo()
4、如果都不是的话,使用默认绑定,如果在严格模式下,就绑定到undefined。否则绑定到全局对象。
var bar=foo()