object.constructor()如何工作?

时间:2018-02-20 12:17:07

标签: javascript

最近我参加了一次采访,采访者问了一个有趣的问题看看

 function MyClass(){
        this.a = 10;
        return 20; // Interesting part
    }
    
    var obj1 = new MyClass();
    console.log(obj1.a); //  10 works as expected.
    console.log(obj1.constructor()); // 20 later I found this

  

您将如何从obj1访问返回值(20)?

在查看了obj1的原型后我找到了答案。 obj1.constructor()按预期工作

请帮助我理解这一点。

1 个答案:

答案 0 :(得分:4)

请参阅mdn

  

构造函数返回的对象成为整个新表达式的结果。 如果构造函数没有显式返回对象,则使用在步骤1中创建的对象。(通常构造函数不返回值,但如果他们想要,他们可以选择这样做覆盖正常的对象创建过程。)

20无处可去,无法访问。它不是一个对象,所以会返回MyCass的实例。