this 指向 口诀

283 阅读1分钟
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;
    }
}