理解函数的四种调用方式对理解this有很大的帮助
1.函数调用
即直接调用,比如fn(),this指向函数当时的context,在浏览器中是window,在node中是global
2.方法调用
比如Obj.fn() this指向Obj. 如a.b.c.d.f()那this指向d
3.构造器调用
this指向新创建的实例
4.使用call,apply调用
指向call和apply的第一个参数.
ps: bind是个新的语法糖,会返回一个新的函数 如
var fn = a.bind(b)
fn() //this指向a,这是和第一种情况会混淆的.
ar fn = a.bind(b)