o1.constructor = subType的目的是什么?

时间:2019-02-25 04:03:37

标签: javascript frontend prototype prototypal-inheritance

在学习寄生组合继承的同时,我在博客中看到一个示例并感到怀疑。它是:

<script>
function inheritPrototype(subType,superType){
      var o1=Object.create(superType.prototype) ;      
      o1.constructor = subType;                    
      subType.prototype=o1;               
}
</script>

我知道它想让subType继承superType,但是我不知道“ o1.constructor = subType;”的目的是什么。我的猜测如下:

1。Object.create的作用是:

Object.create =  function(o){
        var F = function (){};
        F.prototype = o;
        return new F();
    };

由于o1是由Object.create的F创建的,因此它没有任何属性,包括构造函数。因此,这里我们需要给o1一个构造函数属性。但是如果是这样,为什么我们必须使o1.constructor指向子类型?

2。要修复构造函数。但是如果是这样,为什么不先写subType.prototype = o1然后再写o1.constructor = subType?我们修复构造函数是因为原型已经被重写了吧?

3。还有其他原因吗?

PS:问题与"Parasitic Combination Inheritance" in Professional JavaScript for Web Developers完全不同。尽管代码完全相同,但问题实际上有所不同。

0 个答案:

没有答案