判断this指针
//1.函数是否在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();
a.如果是一般函数,this指向全局对象window;
b.在严格模式下"use strict",为undefined.
c.对象的方法里调用,this指向调用该方法的对象.
d.构造函数里的this,指向创建出来的实例.
e.箭头函数是根据外城作用于来决定this