请问下面代码中的this值指向的是全局对象还是对象o?

function F () {
    function C() {
        return this;
    }
    return C();
}
var o = new F();
console.log(o.constructor.name); // Object

这里的this指向全局对象,因为 C() call without new。
这里用正常的方式调用的函数 C() ,所以this指向全局对象。
那么下面的代码呢?

function F () {
    function C() {
        console.log(this);  // C {}
        return this;
    }
    return new C();
}
var o = new F();
console.log(o.constructor.name); // C

在这里在 C() 的前面添加了 new ,这个函数就变成了一个构造函数,this 是一个由 C() 构造器创建的一个实例,所以在这里 this 指向了o


puhongru
581 声望58 粉丝

立志成为一名合格的前端开发工程师