this 指向—学习

60 阅读1分钟
  1. new 调用构造函数时发生了什么?

    (1) 创建一个对象

    (2) 将 this 指向这个对象

    (3) 为对象添加属性和方法

    (4) 最终返回新的对象

  2. 如果构造函数中显式返回一个值,且返回的是一个对象(返回复杂类型),那么 this 就指向这个对象。如果返回的不是一个对象(返回基本类型), 那么 this 仍然指向实例

    // 1. 显式返回对象
    function Foo() {
        this.user = 'sun';
        const o = {};
        return o;
    }
    
    const instance = new Foo();
    console.log(instance.user);
    // undefined
    
    // 2. 显式返回的不是对象
    function Foo2() {
        this.user = 'sun';
        const o = {};
        return 1;
    }
    const instance2 = new Foo2();
    console.log(instance2.user);
    // sun
    
  3. 显式绑定和隐式绑定

    显式绑定:bind、apply、call、new

    隐式绑定:根据调用关系确定 this 指向

  4. call、apply 的显示绑定一般来说更高, new 绑定的优先级比显式 bind 绑定的更高, 箭头函数的绑定无法更改。