if ("普通函数") {
switch ("调用处") {
case "new":
"this = new 出来的实例";
break;
case "call | apply":
"this = 传入的对象";
break;
case "bind":
"this = 首次bind传入的对象";
break;
case "独立调用":
"window | undefined";
case "a.b.fn()":
"b";
break;
}
} else if ("箭头函数") {
switch ("声明处") {
case "最外层有普通函数":
"继承自最近的那个普通函数里的this, 走普通函数的this规则";
break;
case "没有普通函数":
"window | undefined";
break;
}
}